Программа определения полосы пропускания Sun RPC
Программа определения полосы пропускания Sun RPC
Поскольку вызовы процедур в Sun RPC являются синхронными, для них действует то же ограничение, что и для дверей (см. выше). В данном случае проще создать две программы (клиент и сервер), поскольку они создаются автоматически программой rpcgen. В листинге А.11 приведен файл спецификации RPC. Мы объявляем единственную процедуру, принимающую скрытые данные переменной длины в качестве входного аргумента и ничего не возвращающую.
В листинге А.12 приведен текст программы-клиента, а в листинге А.13 — процедура сервера. Мы указываем протокол в качестве аргумента командной строки при вызове клиента, что позволяет нам измерить скорость работы обоих протоколов.
Листинг А.11. Спецификация RPC для измерения полосы пропускания RPC
//bench/bw_sunrpc.х
1 %#define DEBUG /* сервер выполняется в приоритетном режиме */
2 struct data_in {
3 opaque data<>; /* скрытые данные переменной длины */
4 };
5 program BW_SUNRPC_PROG {
6 version BW_SUNRPC_VERS {
7 void BW_SUNRPC(data_in) = 1;
8 } = 1;
9 } = 0x31230001;
Листинг A.12. Клиент RPC для измерения полосы пропускания
//bench/bw_sunrpc_client.с
1 #include "unpipc.h"
2 #include "bw_sunrpc.h"
3 void *buf;
4 int totalnbytes, xfersize;
5 int
6 main(int argc, char **argv)
7 {
8 int i, nloop, ntowrite;
9 CLIENT *cl;
10 data_in in;
11 if (argc != 6)
12 err_quit("usage: bw_sunrpc_client <hostname> <#loops>"
13 " <#mbytes> <#bytes/write> <protocol>");
14 nloop = atoi(argv[2]);
15 totalnbytes = atoi(argv[3]) * 1024 * 1024;
16 xfersize = atoi(argv[4]);
17 buf = Valloc(xfersize);
18 Touch(buf, xfersize);
19 cl = Clnt_create(argv[1], BW_SUNRPC_PROG, BW_SUNRPC_VERS, argv[5]);
20 Start_time();
21 for (i = 0; i < nloop; i++) {
22 ntowrite = totalnbytes;
23 while (ntowrite > 0) {
24 in.data.data_len = xfersize;
25 in.data.data_val = buf;
26 if (bw_sunrpc_1(&in, cl) == NULL)
27 err_quit("%s", clnt_sperror(cl, argv[1]));
28 ntowrite –= xfersize;
29 }
30 }
31 printf("bandwidth: %.3f MB/sec ",
32 totalnbytes / Stop_time() * nloop);
33 exit(0);
34 }
Листинг A.13. Процедура сервера для измерения полосы пропускания RPC
//bench/bw_sunrpc_server.c
1 #include "unpipc.h"
2 #include "bw_sunrpc.h"
3 #ifndef RPCGEN_ANSIC
4 #define bw_sunrpc_1_svc bw_sunrpc_1
5 #endif
6 void *
7 bw_sunrpc_1_svc(data_in *inp, struct svc_req *rqstp)
8 {
9 static int nbytes;
10 nbytes = inp->data.data_len;
11 return(&nbytes); /* должен быть ненулевым, но xdr_void игнорирует */
12 }
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
5.3. Полосы прокрутки
5.3. Полосы прокрутки В некоторых случаях полосы прокрутки нарушают дизайн HTML-страницы. Если содержимое фрейма не помещается в отведенную область, то автоматически появляются полосы прокрутки для просмотра информации. Для управления отображением полос прокрутки
Генерирование полосы навигации
Генерирование полосы навигации Теперь можно заняться кодом, генерирующим вложенные списки в полосе навигации.Снова откроем Web-страницу index.htm в Блокноте, если уже ее закрыли. Удалим весь HTML-код, формирующий пункты вложенных списков в полосе навигации, но оставим фрагмент,
Создание полосы навигации
Создание полосы навигации Напоследок создадим для наших Web-страниц нормальную полосу навигации. Сейчас она у нас слишком уж простенькая.Еще в главе 6 мы узнали, что полоса навигации может быть горизонтальной или вертикальной, может формироваться в одном абзаце, с помощью
Генерирование полосы навигации
Генерирование полосы навигации Теперь можно заняться кодом, генерирующим вложенные списки в полосе навигации.Снова откроем Web-страницу index.htm в Блокноте, если уже ее закрыли. Удалим весь HTML-код, формирующий пункты вложенных списков в полосе навигации, но оставим фрагмент,
6.20.1 Полоса пропускания
6.20.1 Полоса пропускания IP эффективно использует полосу пропускания. Датаграммы помещаются в очередь для пересылки в точку следующего попадания, как только станет доступна полоса пропускания (bandwidth; по традиции мы будем использовать термин "полоса пропускания", хотя
Полоса пропускания канала
Полоса пропускания канала Следующая вкладка диалогового окна настроек (рис. 4.20) называется Bandwidth (Ширина звукового канала). Если у вас низкоскоростной Интернет, то настройка этого параметра для вас особенно важна. Например, когда вы используете IP-телефонию и одновременно
12.1. Эффективная полоса пропускания
12.1. Эффективная полоса пропускания Прежде всего, используя указанные в журнале Elektor значения, определим путем моделирования эффективную 3-dB-полосу пропускания при выходной мощности 35 Вт и сопротивлении нагрузки RH равном 8 Ом.Возможно, некоторым незнакомо понятие
Streaks (Полосы)
Streaks (Полосы) Создает вокруг ярких участков изображения яркие вертикальные и горизонтальные полосы (рис. 4.39). Рис. 4.39. Исходное изображение (слева) и пример использования фильтра Streaks (Полосы)
Окончательная верстка полосы
Окончательная верстка полосы Окончательная верстка полосы в нашем случае сведется к следующим операциям:• постановка на полосу служебной информации (например, колонтитулов);• наполнение полосы реальным текстом (настоящими программами телепередач, подбор настоящих
Результаты измерения полосы пропускания сообщений
Результаты измерения полосы пропускания сообщений В табл. А.2 приведены результаты измерений на компьютере Sparc под управлением Solaris 2.6, а на рис. А.1 — график этих результатов.Как мы и предполагали, полоса пропускания увеличивается с размером сообщения. Поскольку во многих
А.З. Измерение полосы пропускания: программы
А.З. Измерение полосы пропускания: программы В этом разделе приведены тексты трех программ, измеряющих полосу пропускания каналов, очередей сообщений Posix и System V. Результаты работы этих программ приведены в табл. А.2 и
Измерение полосы пропускания канала
Измерение полосы пропускания канала На рис. А.7 приведена схема описываемой программы. Рис. А.7. Схема программы измерения полосы пропускания каналаВ листинге А.1 приведен текст первой половины программы bw_pipe, измеряющей полосу пропускания канала.Листинг А.1. Функция main,
Измерение полосы пропускания очереди сообщений Posix
Измерение полосы пропускания очереди сообщений Posix В листинге А.5 приведена функция main программы, измеряющей полосу пропускания очереди сообщений Posix. Листинг А.6 содержит функции reader и writer. Эта программа устроена аналогично предыдущей, измерявшей полосу пропускания
Программа измерения полосы пропускания очереди System V
Программа измерения полосы пропускания очереди System V В листинге А.7 приведен текст функции main, измеряющей полосу пропускания очередей сообщений System V, а в листинге А.8 —текст функций reader и writer.Листинг А.7. Функция main для измерения полосы пропускания очереди сообщений System
Программа измерения полосы пропускания дверей
Программа измерения полосы пропускания дверей Программа измерения полосы пропускания интерфейса дверей сложнее, чем предыдущие, поскольку нам нужно вызвать fork перед созданием двери. Родительский процесс создает дверь и с помощью канала оповещает дочерний процесс о
Полосы прокрутки
Полосы прокрутки Полосы прокрутки (вертикальная и горизонтальная) используются для перемещения по содержимому документа (рис. 1.35). Чем больше документ и чем больше в нем страниц, тем меньше будет ползунок посередине полос прокрутки. Позиция ползунка позволяет