Программа определения полосы пропускания 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 }

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Окончательная верстка полосы

Из книги Adobe InDesign CS3 автора Завгородний Владимир

Окончательная верстка полосы Окончательная верстка полосы в нашем случае сведется к следующим операциям:• постановка на полосу служебной информации (например, колонтитулов);• наполнение полосы реальным текстом (настоящими программами телепередач, подбор настоящих


Полосы прокрутки

Из книги Word 2007.Популярный самоучитель автора Краинский И

Полосы прокрутки Полосы прокрутки (вертикальная и горизонтальная) используются для перемещения по содержимому документа (рис. 1.35). Чем больше документ и чем больше в нем страниц, тем меньше будет ползунок посередине полос прокрутки. Позиция ползунка позволяет


Streaks (Полосы)

Из книги Photoshop. Лучшие фильтры автора Бондаренко Сергей

Streaks (Полосы) Создает вокруг ярких участков изображения яркие вертикальные и горизонтальные полосы (рис. 4.39). Рис. 4.39. Исходное изображение (слева) и пример использования фильтра Streaks (Полосы)


Результаты измерения полосы пропускания сообщений

Из книги UNIX: взаимодействие процессов автора Стивенс Уильям Ричард

Результаты измерения полосы пропускания сообщений В табл. А.2 приведены результаты измерений на компьютере Sparc под управлением Solaris 2.6, а на рис. А.1 — график этих результатов.Как мы и предполагали, полоса пропускания увеличивается с размером сообщения. Поскольку во многих


А.З. Измерение полосы пропускания: программы

Из книги TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security) автора Фейт Сидни М

А.З. Измерение полосы пропускания: программы В этом разделе приведены тексты трех программ, измеряющих полосу пропускания каналов, очередей сообщений Posix и System V. Результаты работы этих программ приведены в табл. А.2 и


Измерение полосы пропускания канала

Из книги HTML 5, CSS 3 и Web 2.0. Разработка современных Web-сайтов. автора Дронов Владимир

Измерение полосы пропускания канала На рис. А.7 приведена схема описываемой программы. Рис. А.7. Схема программы измерения полосы пропускания каналаВ листинге А.1 приведен текст первой половины программы bw_pipe, измеряющей полосу пропускания канала.Листинг А.1. Функция main,


Измерение полосы пропускания очереди сообщений Posix

Из книги HTML 5, CSS 3 и Web 2.0. Разработка современных Web-сайтов автора Дронов Владимир

Измерение полосы пропускания очереди сообщений Posix В листинге А.5 приведена функция main программы, измеряющей полосу пропускания очереди сообщений Posix. Листинг А.6 содержит функции reader и writer. Эта программа устроена аналогично предыдущей, измерявшей полосу пропускания


Программа измерения полосы пропускания очереди System V

Из книги Визуальное моделирование электронных схем в PSPICE автора Хайнеманн Роберт

Программа измерения полосы пропускания очереди System V В листинге А.7 приведен текст функции main, измеряющей полосу пропускания очередей сообщений System V, а в листинге А.8 —текст функций reader и writer.Листинг А.7. Функция main для измерения полосы пропускания очереди сообщений System


Программа измерения полосы пропускания дверей

Из книги Бесплатные разговоры через Интернет автора Фрузоров Сергей

Программа измерения полосы пропускания дверей Программа измерения полосы пропускания интерфейса дверей сложнее, чем предыдущие, поскольку нам нужно вызвать fork перед созданием двери. Родительский процесс создает дверь и с помощью канала оповещает дочерний процесс о


6.20.1 Полоса пропускания

Из книги HTML, XHTML и CSS на 100% автора Квинт Игорь

6.20.1 Полоса пропускания IP эффективно использует полосу пропускания. Датаграммы помещаются в очередь для пересылки в точку следующего попадания, как только станет доступна полоса пропускания (bandwidth; по традиции мы будем использовать термин "полоса пропускания", хотя


Создание полосы навигации

Из книги автора

Создание полосы навигации Напоследок создадим для наших Web-страниц нормальную полосу навигации. Сейчас она у нас слишком уж простенькая.Еще в главе 6 мы узнали, что полоса навигации может быть горизонтальной или вертикальной, может формироваться в одном абзаце, с помощью


Генерирование полосы навигации

Из книги автора

Генерирование полосы навигации Теперь можно заняться кодом, генерирующим вложенные списки в полосе навигации.Снова откроем Web-страницу index.htm в Блокноте, если уже ее закрыли. Удалим весь HTML-код, формирующий пункты вложенных списков в полосе навигации, но оставим фрагмент,


Генерирование полосы навигации

Из книги автора

Генерирование полосы навигации Теперь можно заняться кодом, генерирующим вложенные списки в полосе навигации.Снова откроем Web-страницу index.htm в Блокноте, если уже ее закрыли. Удалим весь HTML-код, формирующий пункты вложенных списков в полосе навигации, но оставим фрагмент,


12.1. Эффективная полоса пропускания

Из книги автора

12.1. Эффективная полоса пропускания Прежде всего, используя указанные в журнале Elektor значения, определим путем моделирования эффективную 3-dB-полосу пропускания при выходной мощности 35 Вт и сопротивлении нагрузки RH равном 8 Ом.Возможно, некоторым незнакомо понятие


Полоса пропускания канала

Из книги автора

Полоса пропускания канала Следующая вкладка диалогового окна настроек (рис. 4.20) называется Bandwidth (Ширина звукового канала). Если у вас низкоскоростной Интернет, то настройка этого параметра для вас особенно важна. Например, когда вы используете IP-телефонию и одновременно


5.3. Полосы прокрутки

Из книги автора

5.3. Полосы прокрутки В некоторых случаях полосы прокрутки нарушают дизайн HTML-страницы. Если содержимое фрейма не помещается в отведенную область, то автоматически появляются полосы прокрутки для просмотра информации. Для управления отображением полос прокрутки