| Комментариев: 0 | Перейти в пост>
mq_timedsend()
POSIX IPC в целом замечательная и полезная штука, но таймаут в виде абсолютного временного значения в timedsend - это нелогично и неудобно.
struct timespec ts;
clock_gettime(CLOCK_REALTIME, &ts);
ts.tv_sec += 1;
mq_timedsend(mq_fd, &data, sizeof(data), 0, &ts);
struct timespec ts;
clock_gettime(CLOCK_REALTIME, &ts);
ts.tv_sec += 1;
mq_timedsend(mq_fd, &data, sizeof(data), 0, &ts);
| Комментариев: 0 | Перейти в пост>
Особенности бондинга в Linux.
Бондинг в линуксе не так прост, как кажется на первый взгляд. Если создать bond-интерфейс из 3х линков в режиме balance-rr и запустить только 2 линка из 3х, то будет не очень очевидный результат: на одном из линков исходящего трафика будет в 2 раза больше, чем на другом. То есть в случае с 3мя гигабитными линками пропускная способность будет не ожидаемые 2, а только 1.5 гигабита.
Получается, что даже если один интерфейс неактивен, число потоков трафика не меняется, но поток, который должен был идти в неактивный интерфейс, направляется на один из оставшихся активных интерфейсов. В результате один из интерфейсов работает за двоих и общая пропускная способность оказывается ниже, чем можно было бы ожидать.
Вот с таким нежданчиком недавно столкнулся, когда недавно собрал два бондинг-интерфейса по 3 Gigabit Ethernet порта в каждом. На тот момент мне нужно было только 2 гигабита, поэтому подключил только 4 порта из 6, оставив ещё 2 про запас. А через какое-то время увидел, что больше 1.5 гигабита почему-то не проходит.
Получается, что корректную балансировки режим balance-rr даёт только в случае, когда всё линки работают, что на мой взгляд некорректно.Такая картина наблюдалась при версии ядра 3.2.x, возможно в последующих версиях ситуация лучше.
Получается, что даже если один интерфейс неактивен, число потоков трафика не меняется, но поток, который должен был идти в неактивный интерфейс, направляется на один из оставшихся активных интерфейсов. В результате один из интерфейсов работает за двоих и общая пропускная способность оказывается ниже, чем можно было бы ожидать.
Вот с таким нежданчиком недавно столкнулся, когда недавно собрал два бондинг-интерфейса по 3 Gigabit Ethernet порта в каждом. На тот момент мне нужно было только 2 гигабита, поэтому подключил только 4 порта из 6, оставив ещё 2 про запас. А через какое-то время увидел, что больше 1.5 гигабита почему-то не проходит.
Получается, что корректную балансировки режим balance-rr даёт только в случае, когда всё линки работают, что на мой взгляд некорректно.Такая картина наблюдалась при версии ядра 3.2.x, возможно в последующих версиях ситуация лучше.
| Комментариев: 0 | Перейти в пост>
| Комментариев: 0 | Перейти в пост>
| Комментариев: 0 | Перейти в пост>



