// повторяем в точности тот же обмен, но по запросу devctl
unsigned int DCTL = (blk<<16) + DCMD_SRR;
cout << "- manager exchange:" << flush;
for (int i = 0; i < num; i++) {
tim[i] = ClockCycles;
if (devctl(fd, DCTL, bufou, blk, NULL) ! = EOK)
exit("DEVCTL error");
tim[i] = ClockCycles - tim[i];
}
outtim;
close(fd);
delete [] bufin;
delete [] bufou;
delete [] tim;
return EXIT_SUCCESS;
}
Смотрим
локальные результаты исполнения и оценки, которые дает нам эта клиентская программа (знаком отмечено С.К.О. предшествующего ему в выводе значения измеренной средней величины, после чего в скобках — процентное отношение этого С.К.О. к измеряемой величине):
CPU speed [c.p.s.]: client = 534639500, server = 534639500
– message exchange: 14365 ~953 {7%}
– manager exchange: 16018 ~5399 {34%}
Это дает нам следующую информацию:
• Обмен с сервером, работающим на локальном хосте, происходит синхронно: клиент, переслав запрос серверу, блокируется в ожидании ответа от него. В этих условиях мы загружаем процессор на 100% совместной активностью клиента и сервера.
• Обмен в эквивалентныхусловиях с сервером, работающим как менеджер ресурса, требует (в сравнении с прямым обменом сообщениями) в 1,12–2,44 раз большее количество процессорных циклов на свое обслуживание, или, в относительных единицах, максимально достижимая производительность менеджера меньше на 12–144% .
• Самые неблагоприятные (144%) значения относятся к случаю обмена короткими сообщениями (1–10 байт); достаточно ощутимое (~2) значение этого соотношения сохраняется до размеров передаваемых блоков данных, равных 8–10 Кбайт.
• Накладные расходы на передачу единичного байта информации недопустимо велики (2693 циклов на байт при обмене сообщениями и 6579 циклов на байт — для менеджера) при организации обмена короткими сообщениями. С ростом объема данных, передаваемых за один цикл обмена, этот показатель очень резко падает (на блоках по 100 байт уже 33,5 и 70 соответственно, т.е. 2 порядка). Для систем с интенсивными потоками обмена необходимо стремиться максимально блокировать передаваемые данные и минимизировать число актов обмена.