Redhat 6 で次のコード スニペットを実行しました。
#include <unistd.h>
int main(int argc, char *argv[])
{
while(true)
{
#ifdef SLEEP
sleep(1);
#endif
#ifdef USLEEP
usleep(1000);
#endif
}
return 0;
}
1000 us = 1 ミリ秒であるため、まったく同じ量をスリープすることになっています。redhat 6 では、スリープを使用すると、常に 0% の使用率になります。usleep を使用する場合、常に 1.5% から 2% の時間がかかります。私が維持しているサーバー全体にそれらの多くがあります。redhat 6 で usleep が CPU センシティブである理由の説明はありますか? Redhat 5 では、違いは見られません。ところで、一般的に、redhat 6 では CPU の感度がはるかに高いことがわかります。そのあたりの既知の問題はありますか?