Я разработал приложение на C. Я запускаю это приложение на "Red Hat Enterprise Linux Server release 5.8 (Tikanga)", и все выглядит хорошо, но когда мы развертываем это приложение на "CentOS версии 6.5 (Final)", он начинает делать проблемы. Он занимает больше памяти chache, и через 30-45 минут он поднимает всплеск, и все процессоры показывают 100% -ное использование процессора в течение 1-2 секунд.
Я google эту проблему и обнаружил, что CPU с высоким уровнем использования usleep на Cent OS 6.3
Поскольку один процесс в моем приложении использует 10 usleep. Он занимает менее 3% процессора в RedHat, однако он занимает довольно много в CentOS около 90%. После прочтения ссылки, когда я изменяю сон с 10 usleep на 1000 usleep или 1 us, тогда он занимает 40% CPU.
Мне нужно знать, что в ядре CentOS 6.5 используются высокоскоростные таймеры или нет, или мне нужно установить любую конфигурацию при компиляции ядра.
Во-первых, вы сравниваете яблоки и апельсины: CentOS 6 соответствует RHEL 6. Очень вероятно, что ваш код будет вести себя одинаково на RHEL 6.5, как это делается на CentOS 6.5, и то же самое на CentOS 5.8, как на RHEL 5.8. Недостаточно описать проблему как разницу между RHEL и CentOS.
Во-вторых, если ваше использование процессора сильно зависит от нескольких вызовов usleep() (выполняется, по-видимому, очень много раз), тогда ваш код является ошибочным, и вы должны его исправить. Создание настраиваемого ядра для маскировки проблемы было бы довольно отсталым. Тем не менее, если целью является больше перейти на CentOS, чем перейти к (несколько) более современной среде, переключитесь на CentOS 5 вместо CentOS 6.