1

Мы тут как бы натолкнулись на стену, поэтому я решил, что стоит спросить на этом сайте.

У нас есть процесс Java, который обслуживает старые RPC-подключения Sun в качестве уровня совместимости в новой системе. На старых машинах SuSE (2007 Xeon с 2.6.16) все работало просто отлично. В то время как мы пытались перейти на более современную платформу Xeon E5-2670 с RHEL 2.6.32, процесс выполняется, но он привязывает все процессоры под нагрузкой и отвечает МЕДЛЕННО, чем предыдущий комплект. Загрузка на стороне клиента одинакова, мы используем более быстрый серверный диск, такое же количество физических ядер (хотя теперь x2 из-за гиперпоточности), ту же оперативную память (которая не голодает и не переставляется).

Профилирование на самом деле ничего не показывает. Было некоторое подозрение о том, что диск работает медленнее из-за записи журналов (раньше было ext3, теперь ext4+acl), но это, кажется, не большая проблема, и "загрузка журналов" такая же. iostat, netstat все выглядит нормально.

Я подозреваю, что что-то изменилось в обработке RPC между ядрами, но, кажется, трудно найти много информации, так как (я предполагаю) связь типа Sun RPC сегодня не так популярна.

Какие-нибудь мысли? Я не ожидаю, что кто-то обязательно решит проблему, так как не могу рассказать об этом слишком много, но, возможно, указатели на то, на что обратить внимание при диагностике RPC и издержек ядра?

Спасибо!

2 ответа2

1

Похоже, что проблема связана с прозрачным функционалом ядра страницы . Я не уверен в полных технических деталях, но достаточно сказать следующие три команды, чтобы отключить это исправленные вещи:

echo 0 > /sys/kernel/mm/transparent_hugepage/khugepaged/defrag
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled

Загрузка процессора снизилась до того уровня, на котором она была у нас до перехода на новое ядро

Надеюсь, что это поможет кому-то еще, так как я не смог найти в Интернете ничего плохого в отношении RPC, который не был связан с NFS! :-)

-1

Проверьте свой код на время пока-сна и замените его фактическим сном + проверьте конфигурацию вашего ядра.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .