Стивенс Уильям Ричард
Шрифт:
Рис. А.5. Время увеличения счетчика в разделяемой памяти (Solaris 2.6)
Рис. А.6. Время увеличения счетчика в разделяемой памяти
Таблица А.6. Время увеличения счетчика в разделяемой памяти для Solaris 2.6 (в секундах)
Кол-во процессов | Взаимное исключение Posix | Блокировка чтения-записи | Семафор Posix в памяти | Именованный семафор Posix | Семафор System V | Семафор System V с UNDO | Блокировка записей fcntl |
---|---|---|---|---|---|---|---|
1 | 0,8 | 1,6 | 13,6 | 14,3 | 17,3 | 22,1 | 90,7 |
2 | 1,6 | 3,9 | 29,2 | 29,2 | 34,9 | 41,6 | 244,5 |
3 | 2,3 | 6,4 | 41,6 | 42,9 | 54,0 | 60,1 | 376,4 |
4 | 3,1 | 12,2 | 57,3 | 58,8 | 72,4 | 81,9 | 558,0 |
5 | 4,0 | 20,4 | 70,4 | 73,5 | 87,8 | 102,6 | 764,0 |
Таблица А.7. Время увеличения счетчика в разделяемой памяти для Digital Unix 4.0B (в секундах)
Количество процессов | Семафор Posix в памяти | Именованный семафор Posix | Семафор System V | Семафор System V с UNDO | Блокировка записей fcntl |
---|---|---|---|---|---|
1 | 12,8 | 12,5 | 30,1 | 49,0 | 98,1 |
2 | 664,8 | 659,2 | 58,6 | 95,7 | 477,1 |
3 | 1236,1 | 1269,8 | 96,4 | 146,2 | 1785,2 |
4 | 1772,9 | 1804,1 | 120,3 | 197,0 | 2582,8 |
5 | 2179,9 | 2196,8 | 147,7 | 250,9 | 3419,2 |
А.З. Измерение полосы пропускания: программы
В этом разделе приведены тексты трех программ, измеряющих полосу пропускания каналов, очередей сообщений Posix и System V. Результаты работы этих программ приведены в табл. А.2 и А.З.
Измерение полосы пропускания канала
На рис. А.7 приведена схема описываемой программы.
Рис. А.7. Схема программы измерения полосы пропускания канала
В листинге А.1 приведен текст первой половины программы bw_pipe, измеряющей полосу пропускания канала.
11-15 Аргументы командной строки задают количество повторов (обычно 5), количество передаваемых мегабайтов (если указать 10, будет передано 10×1024×1024 байт) и количество байтов для каждой операции read и write (которое может принимать значения от 1024 до 65536 в наших измерениях).
16-17 Вызов valloc аналогичен malloc, но выделяемая память начинается с границы страницы памяти. Функция touch (листинг А.3) помещает 1 байт данных в каждую страницу буфера, заставляя ядро считать в память все страницы данного буфера. Мы всегда выполняем это перед проведением измерений.
ПРИМЕЧАНИЕ
Функция valloc не входит в стандарт Posix.1 и названа устаревшей в Unix 98. Она требовалась в ранних версиях спецификаций Х/Open, но уже не является необходимой. Обертка Valloc вызывает функцию malloc, если valloc недоступна.