Программа измерения времени задержки Sun RPC

Программа измерения времени задержки Sun RPC

Для измерения времени задержки Sun RPC мы напишем две программы: клиент и сервер, аналогично измерению полосы пропускания. Мы используем старый файл спецификации RPC, но на этот раз клиент вызывает нулевую процедуру сервера. Вспомните упражнение 16.11: эта процедура не принимает никаких аргументов и ничего не возвращает. Это именно то, что нам нужно, чтобы определить задержку. В листинге А.18 приведен текст клиента. Как и в решении упражнения 16.11, нам нужно воспользоваться clnt_call для вызова нулевой процедуры; в заглушке клиента отсутствует необходимая заглушка для этой процедуры.

Листинг А.18. Клиент Sun RPC для измерения задержки

//bench/lat_sunrpc_client.с

1  #include "unpipc.h"

2  #include "lat_sunrpc.h"

3  int

4  main(int argc, char **argv)

5  {

6   int i, nloop;

7   CLIENT *cl;

8   struct timeval tv;

9   if (argc != 4)

10   err_quit("usage: lat_sunrpc_client <hostname> <#loops> <protocol>");

11  nloop = atoi(argv[2]);

12  cl = Clnt_create(argv[1], BW_SUNRPC_PROG, BW_SUNRPC_VERS, argv[3]);

13  tv.tv_sec = 10;

14  tv.tv_usec = 0;

15  Start_time();

16  for (i = 0; i < nloop; i++) {

17   if (clnt_call(cl, NULLPROC, xdr_void, NULL,

18    xdr_void, NULL, tv) != RPC_SUCCESS)

19    err_quit("%s", clnt_sperror(cl, argv[1]));

20  }

21  printf("latency: %.3f usec ", Stop_time() / nloop);

22  exit(0);

23 }

Мы компилируем сервер с функцией, приведенной в листинге А.13, но она все равно не вызывается. Поскольку мы используем rpcgen для построения клиента и сервера, нам нужно определить хотя бы одну процедуру сервера, но мы не обязаны ее вызывать. Причина, по которой мы используем rpcgen, заключается в том, что она автоматически создает функцию main сервера с нулевой процедурой, которая нам нужна.

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

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

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

Установка задержки перед появлением контекстного меню

Из книги Delphi. Учимся на примерах автора Парижский Сергей Михайлович

Установка задержки перед появлением контекстного меню Для того чтобы установить задержку появления контекстного меню в 10 миллисекунд следует создать такой ключ:[HKEY_CURRENT_USERControlPaneldesktop]


1.6.13. Правило экономии: время программиста стоит дорого; поэтому экономия его времени более приоритетна по сравнению с экономией машинного времени

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

1.6.13. Правило экономии: время программиста стоит дорого; поэтому экономия его времени более приоритетна по сравнению с экономией машинного времени "В ранние мини-компьютерные времена Unix" вынесенная в заголовок идея была довольно радикальной (машины тогда работали


Программа Nero Express Лучшая программа для записи дисков

Из книги Самоучитель работы на компьютере автора Колисниченко Денис Николаевич

Программа Nero Express Лучшая программа для записи дисков Записывать диски средствами Windows неинтересно. Во-первых, скучно, а во-вторых, вам недоступны какие-либо настройки записи, вы даже не можете указать скорость, не говоря уже о выборе формата диска, методе записи. Вот


1.6.13. Правило экономии: время программиста стоит дорого; поэтому экономия его времени более приоритетна по сравнению с экономией машинного времени

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

1.6.13. Правило экономии: время программиста стоит дорого; поэтому экономия его времени более приоритетна по сравнению с экономией машинного времени "В ранние мини-компьютерные времена Unix" вынесенная в заголовок идея была довольно радикальной (машины тогда работали


Результаты измерения задержки

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

Результаты измерения задержки В табл. А.1 приведены значения задержки в Solaris 2.6 и Digital Unix 4.0B.Таблица А.1. Задержка при передаче сообщения размером 1 байт (в микросекундах)  Канал Очередь сообщений Posix Очередь сообщений System V Двери Sun RPC TCP Sun RPC UDP Сокет TCP Сокет UDP Доменный


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

Из книги iOS. Приемы программирования автора Нахавандипур Вандад

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


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

Из книги Новый ум короля [О компьютерах, мышлении и законах физики] автора Пенроуз Роджер

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


А.4. Измерение задержки передачи сообщений: программы

Из книги Разработка ядра Linux автора Лав Роберт

А.4. Измерение задержки передачи сообщений: программы Приведем текст трех программ, измеряющих задержку при передаче сообщений по каналам, очередям Posix и очередям System V. Данные о производительности, полученные с их помощью, приведены в табл.


Программа измерения задержки канала

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

Программа измерения задержки канала Программа для измерения задержки канала приведена в листинге А.14.Листинг А.14. Программа измерения задержки канала//bench/lat_pipe.c1  #include "unpipc.h"2  void3  doit(int readfd, int writefd)4  {5   char c;6   Write(writefd, &c, 1);7   if (Read(readfd, &c, 1) != 1)8    err_quit("read error");9 


Программа измерения задержки очередей сообщений Posix

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

Программа измерения задержки очередей сообщений Posix Пpoгрaммa измерения задержки для очередей сообщений Posix приведена в листинге А.15.Листинг А. 15. Программа измерения задержки для очереди сообщений Posix//bench/lat_pxmsg.с1  #include "unpipc.h"2  #define NAME1 "lat_pxmsg1"3  #define NAME2 "lat_pxmsg2"4  #define MAXMSG 4 /*


Измерение задержки очередей сообщений System V

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

Измерение задержки очередей сообщений System V В листинге А.16 приведен текст программы измерения времени задержки для очередей сообщений System V.Листинг А.16. Программа измерения времени задержки для очередей сообщений System V//bench/lat_svmsg.c1  #include "unpipc.h"2  struct msgbuf p2child = { 1, { 0 } }; /* type = 1


Программа измерения задержки интерфейса дверей

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

Программа измерения задержки интерфейса дверей Пpoгрaммa измерения задержки для интерфейса дверей дана в листинге А.17. Дочерний процесс создает дверь и связывает с ней функцию server. Родительский процесс открывает дверь и вызывает door_call в цикле. В качестве аргумента


Короткие задержки

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

Короткие задержки Иногда коду ядра (и снопа обычно драйверам) необходимы задержки на очень короткие интервалы времени (короче, чем период системного таймера), причем интервал должен отслеживаться с достаточно высокой точностью. Это часто необходимо для синхронизации с