Система не в состоянии обрабатывать мягкие прерывания, но имеет время простоя?

У меня есть постоянное 5% и более процессорного времени, затрачиваемого на обработку программных прерываний. Доу, что ksoftirqd работает почти постоянно, но использует очень небольшое количество процессора (менее 1%).

Тем не менее, независимо от этой большой нагрузки, процент простоя остается достаточно высоким (30% и более) (это top значение для простоя или простоя из mpstat).

Немного предыстории (однако я хотел бы получить концептуальный ответ, а не тот, который решает проблему в моей системе). Система используется для маршрутизации (echo 1 > /proc/sys/net/ipv4/ip_forward) и NAT с iptables, и запускает дополнительное приложение пользовательского пространства, не связанное с сетью. Кроме того, средняя нагрузка всегда выше 1 (это одноядерный процессор) (это значение Средняя загрузка от topили вывод sar -q).

Что мешает системе использовать время простоя, чтобы не пропустить обработку программных прерываний?

Я ожидал бы увидеть время простоя (id вверху), которое будет использоваться для обслуживания программных прерываний (si вверху), и при этом процессоры не будут пропускать задачи и одновременно будут простаивать.

1 ответ

В вашей системе нет большой нагрузки.

Прерывания обрабатываются правильно, так же, как ваша маршрутизация и ваше приложение. Если бы это было не так, ваша система не имела 30% простоя. (В любом случае, где ты это видишь?)

Использование небольшой системы для множества разных вещей не всегда означает перегрузку, особенно если в NAT не слишком много данных. Если ваши сетевые интерфейсы работают с DMA (что весьма вероятно), то ваши обработчики прерываний даже не делают ни одной копии блока в текущих ядрах.

Кроме того, вы загружаете свою систему совсем по-другому (пока ваша сетевая карта разговаривает с dma, ваше приложение может работать).

Единственной серьезной проблемой в вашей системе может быть большое соотношение переключателей задач. Это главная проблема подобных одноядерных, многоцелевых, замечательных серверов. Но в вашем случае это вызвало большую нагрузку на систему, чего не происходит.

Я был бы рад расширить этот ответ, если бы вы объяснили, откуда взялась эта "бездействующая 30%". Вы говорите, загрузка системы всегда больше 1.

Другие вопросы по тегам