Измерить скорость локальных розеток? - PullRequest
1 голос
/ 28 марта 2012

Как измерить скорость обмена данными через AF_UNIX сокеты?Можно ли написать несколько двух скриптов bash:

  • Сначала создайте сокет, привяжите сокет к локальному адресу, примите соединение и получите все данные для /dev/null.
  • Второй создает сокет, устанавливает соединение с уже открытым сокетом и порождает какое-то устройство в /dev, чтобы можно было измерить скорость командой dd?

Ответы [ 2 ]

5 голосов
/ 02 апреля 2012

Вы можете использовать netcat -U, чтобы легко общаться через доменные сокеты Unix. Команда pv пригодится, если вы хотите узнать скорость, с которой данные перемещаются по каналу.

приемник:

nc -lU /tmp/socket > /dev/null

Отправитель:

pv /dev/zero | nc -U /tmp/socket

Как правило, сокеты Unix действительно быстрые. Это работало со скоростью 170 МБ / с на моем старом ноутбуке и 400 МБ / с на моем более новом настольном компьютере.

2 голосов
/ 02 апреля 2012

Хотя это не скрипт, это некоторый базовый код C, который я использовал для количественной оценки скорости данных сокетов с использованием стандартных сокетов TCP (на случай, если вам действительно нужно проверять на уровне сокетов, а не только общую пропускную способность).По сути, он записывает 1K ... 16M больших двоичных данных в блоках по 1K.

  for (int i=0; i<15; i++)
  {
     if ((fd = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) > 0)
     {
        timenode node;
        clock_gettime(CLOCK_REALTIME, &node.ts);
        if (connect(fd, (struct sockaddr *) &sa, sizeof(sa)) == 0)
        {
           int n = 0;
           int wb = 1024<<i;
           while ((wb-n)>0)
           {
              n+=send(fd, buf, sizeof(buf), 0);
           }
        }
        do_ts(node.ts, wtn[i], wavg[i]);
        close(fd);
     }
  }

По иронии судьбы, я смог увидеть, что по каналу 1Gbps мне удалось получить пропускную способность около 110 МБ / с(125 МБ / с - теоретический максимум), пока я не отправил 4+ МБ данных ... затем он уменьшился до ~ 1 МБ / с ... из-за обратного давления, вызванного внутренней проблемой коммутатора Ethernet.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...