Kniga-Online.club
» » » » QNX/UNIX: Анатомия параллелизма - Цилюрик Олег Иванович

QNX/UNIX: Анатомия параллелизма - Цилюрик Олег Иванович

Читать бесплатно QNX/UNIX: Анатомия параллелизма - Цилюрик Олег Иванович. Жанр: Интернет год 2004. Так же читаем полные версии (весь текст) онлайн без регистрации и SMS на сайте kniga-online.club или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Перейти на страницу:

  case 'm': // число повторений таких блоков

   if (sscanf(optarg, "%i", &num) != 1)

    exit("parse command line failed");

   break;

  default:

   exit(EXIT_FAILURE);

  }

 }

 // "составить" полное имя менеджера

 strcat(PATH, DEVNAME);

 cout << "server path. " << PATH << ", block size = "

  << blk << " bytes, repeat = " << num << endl;

 // при инициализации мы сразу получаем скорость процессора клиента

 result data;

 cout << "CPU speed [с.p.s ]: client = " << data.cps;

 // пытаемся подключиться к серверу-менеджеру

 int fd = open(PATH, O_RDONLY);

 if (fd < 0) exit("server not found");

 // читаем его параметры

 if (read(fd, &data, sizeof(result)) == -1)

  exit("parameter block read");

 cout << ", server = " << data.cps << endl;

 tim = new uint64_t[num];

 uint64_t tim2;

 uint8_t *bufin = new uint8_t[blk];

 *bufou = new uint8_t[blk];

 // определяем дескриптор сетевого узла

 int32_t node = netmgr_strtond(PATH, NULL);

 // это интересное место: если в имени нет сетевого префикса пути,

 // но это имя удается открыть, то это локальный хост!

 if (node == -1 && fd > 0 && errno == ENOENT)

  node = ND_LOCAL_NODE;

 // по адресным данным, полученным ранее по read(), создаем канал

 // для прямого обмена сообщениями с тем же процессом:

 int coid = ConnectAttach(node, data.pid, data.chid, _NTO_SIDE_CHANNEL, 0);

 if (coid < 0) exit("connect to message channel");

 cout << " - message exchange:" << flush;

 // обмен по каналу низкоуровневых сообщений

 for (int i = 0; i < num; i++) {

  tim[i] = ClockCycles();

  if (MsgSend(coid, bufou, blk, bufin, blk) == -1)

   exit("exchange data with channel");

  tim[i] = ClockCycles() - tim[i];

 }

 outtim();

 ConnectDetach(coid);

 // повторяем в точности тот же обмен, но по запросу 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;

}

Смотрим локальные результаты исполнения и оценки, которые дает нам эта клиентская программа (знаком отмечено С.К.О. предшествующего ему в выводе значения измеренной средней величины, после чего в скобках — процентное отношение этого С.К.О. к измеряемой величине):

# nice -n-19 cli -b1 -m1000

SRR client: vers. 1.03

server path: /dev/srr, block size = 1 bytes, repeat = 1000

CPU speed [c.p.s.]: client = 534639500, server = 534639500

- message exchange: 2693 ~168 {6%}

- manager exchange: 6579 ~357 {5%}

# nice -n-19 cli -b10 -m1000

SRR client: vers. 1.03

server path: /dev/srr, block size = 10 bytes, repeat = 1000

CPU speed [c.p.s.]: client = 534639500, server = 534639500

- message exchange: 2726 ~258 {9%}

- manager exchange: 6725 ~378 {6%}

# nice -n-19 cli -b100 -m1000

SRR client: vers. 1.03

server path: /dev/srr, block size = 100 bytes, repeat = 1000

CPU speed [c.p.s.]: client = 534639500, server = 534639500

- message exchange: 3351 ~190 {6%}

- manager exchange: 7055 ~414 {6%}

# nice -n-19 cli -b1000 -m1000

SRR client: vers 1.03

server path: /dev/srr, block size = 1000 bytes, repeat = 1000

CPU speed [c.p.s.]: client = 534639500, server = 534639500

- message exchange: 3912 ~369  {9%}

Перейти на страницу:

Цилюрик Олег Иванович читать все книги автора по порядку

Цилюрик Олег Иванович - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки kniga-online.club.


QNX/UNIX: Анатомия параллелизма отзывы

Отзывы читателей о книге QNX/UNIX: Анатомия параллелизма, автор: Цилюрик Олег Иванович. Читайте комментарии и мнения людей о произведении.


Уважаемые читатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор kniga-online.


Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*