Системное программирование в среде Windows
Шрифт:
Использовались шесть различных стратегий реализации, результаты применения которых представлены в отдельных столбцах табл. В.5.
Таблица В.5. Производительность многопоточных реализаций на четырехпроцессорном сервере
К-во потоков | Широковещат.модель | Широковещат.модель | Широковещат. модель | Сигнальная модель | Сигнальная модель | Сигнальная модель | |
---|---|---|---|---|---|---|---|
Mtx, Evt | CritSec, Evt | Mtx, Evt | Mtx, Evt | CritSec, Evt | Mtx, Evt | ||
Т/О 5мс | Т/О 25мс | SigObjWait | Т/О неопределен | Т/О неопределен | SigObjWait | ||
1 | Реальное
| 0,03 | 0,03 | 0,05 | 0,05 | 0,03 | 0,05 |
Пользовательское время | 0,03 | 0,06 | 0,03 | 0,05 | 0,08 | 0,05 | |
Системное время | 0,06 | 0,02 | 0,09 | 0,08 | 0,02 | 0,06 | |
2 | Реальное время | 0,14 | 0,27 | 0,09 | 0,08 | 0,06 | 0,08 |
Пользовательское время | 0,13 | 0,05 | 0,14 | 0,17 | 0,11 | 0,08 | |
Системное время | 0,11 | 0,06 | 0,16 | 0,09 | 0,11 | 0,17 | |
4 | Реальное время | 0,39 | 0,59 | 0,23 | 0,19 | 0,16 | 0,20 |
Пользовательское время | 0,18 | 0,17 | 0,22 | 0,26 | 0,17 | 0,19 | |
Системное время | 0,30 | 0,22 | 0,41 | 0,31 | 0,22 | 0,31 | |
8 | Реальное время | 0,83 | 0,92 | 0,73 | 0,36 | 0,34 | 0,36 |
Пользовательское время | 0,34 | 0,36 | 0,55 | 0,52 | 0,45 | 0,45 | |
Системное время | 0,98 | 1,00 | 1,00 | 0,69 | 0,39 | 0,75 | |
16 | Реальное время | 2,42 | 2,30 | 2,38 | 0,75 | 0,69 | 0,75 |
Пользовательское время | 1,17 | 1,31 | 1,22 | 0,81 | 0,81 | 0,88 | |
Системное время | 3,69 | 3,05 | 3,39 | 1,45 | 1,08 | 1,33 | |
32 | Реальное время | 7,56 | 7,50 | 7,98 | 1,50 | 1,50 | 1,50 |
Пользовательское время | 3,33 | 3,73 | 2,56 | 1,75 | 1,69 | 1,78 | |
Системное время | 12,52 | 10,72 | 11,03 | 3,13 | 2,00 | 2,69 | |
64 | Реальное время | 27,72 | 26,23 | 29,31 | 3,14 | 2,95 | 3,20 |
Пользовательское время | 7,89 | 10,75 | 7,22 | 3,73 | 3,69 | 3,47 | |
Системное время | 46,70 | 40,33 | 36,67 | 6,28 | 3,89 | 5,47 |
В комментариях, помещенных вслед за программой 10.4, обсуждаются результаты и разъясняются преимущества различных реализаций, а здесь мы лишь отметим, что результаты для сигнальной модели изменяются пропорционально изменению количества потоков, тогда как в случае широковещательной модели, особенно для вариантов с 32 и 64 потоками, это не так. Можно также видеть, что в случае широковещательной модели система потребляет значительную долю процессорного времени, ибо выполняются, вычисляют предикат и осуществляют немедленный возврат в состояние ожидания множество потоков.
1. Широковещательная модель, мьютекс (Mtx), событие (Evt), раздельные вызовы функций освобождения и ожидания. Конечный период ожидания (Time-out, TO) устанавливался равным 5 миллисекундам, что являлось оптимальным значением для 16-поточного варианта.
2. Широковещательная модель, объект CRITICAL_SECTION (CritSec), событие, раздельные вызовы функций освобождения и ожидания. Настраиваемый период ожидания устанавливался равным 5 миллисекундам, что являлось оптимальным значением для 16-поточного варианта.
3. Широковещательная модель, мьютекс, событие, атомарный вызов SignalObjectAndWait (SigObjWait).
4. Сигнальная модель, мьютекс, событие, раздельные вызовы функций освобождения и ожидания.
5. Сигнальная модель, объект CRITICAL_SECTION, событие, раздельные вызовы функций освобождения и ожидания.
6. Сигнальная модель, мьютекс, событие, атомарный вызов SignalObjectAndWait.
Выполнение тестов
На Web-сайте книги в каталоге TimeTest находятся пакетные файлы, с помощью которых вы сможете запускать тесты как под управлением Windows 2000/NT, так и под управлением Windows 9x:
Для всех тестов, кроме тестов последней серии, текстовые ASCII-файлы большого размера создавались с помощью программы RandFile.
Библиография
1. Beveridge, Jim, and Wiener, Robert. Multithreading Applications in Win32: The Complete Guide to Threads, Addison-Wesley, Reading, MA, 1997. ISBN: 0-201-44234-5.
2. Bott, Ed, and Siechert, Carl. Microsoft Windows Security Inside Out for Windows XP and Windows 2000, Microsoft Press, Redmond, WA, 2002. ISBN: 0-735-61632-9.
3. Box, Don. Essential COM, Addison-Wesley, Reading, MA, 1998. ISBN: 0-201-63446-5.
4. Box, Don (editor), et al. Effective COM: 50 Ways to Improve Your COM and MTS Based Applications, Addison-Wesley, Reading, MA, 1999. ISBN: 0-20-1-37968-6.
5. Brain, Marshall, and Reeves, Ron. Win32 System Services: The Heart of Windows 98 and Windows 2000, Third Edition, Prentice Hall, Englewood Cliffs, NJ, 2000. ISBN: 0-13-022557-6.