Как я заставляю многопоточное приложение использовать все ядра на Ubuntu под VMware?

В моей системе Linux (GNU coreutils 8.12) я смог проверить (использование strace) это tail -f¹ использует lseek системный вызов для перескакивания через большую часть файла быстро:

lseek(3, 0, SEEK_CUR)                   = 0
lseek(3, 0, SEEK_END)                   = 194086
lseek(3, 188416, SEEK_SET)              = 188416

Это означает, что размер отслеженного файла не должен иметь значения в так или иначе.

Возможно, можно проверить, применяется ли то же на систему. (Очевидно, это должно иметь место.)


1. Я также пытался отключить поддержку inotify с недокументированным ---disable-inotify, на всякий случай.

2
29.06.2011, 11:11
1 ответ

Я попытался бы диагностировать, если это - проблема с Вашей средой VM или Вашим кодом. Вот некоторые вещи рассмотреть о Вашем VM.

  • Вам настраивали VMware, чтобы предоставить доступ нескольким ЦП? У меня нет опыта с последними версиями, но он раньше был чем-то, что необходимо было конкретно позволить. В VirtualBox у меня есть опция в конфигурации виртуальной машины, которая указывает, со сколькими ЦП гостю разрешают работать.

  • Если Вы cat /proc/cpuinfo от Вашего гостя Ubuntu Вы видите больше чем один ЦП?

  • Вы получаете надлежащее использование нескольких ЦП, если Вы делаете что-то универсальное как вход в Ваше ядро получает выполнение компиляции ядра с make -j10?

Если бы какая-либо из этих вещей поднимается неправильно, они указали бы, что Ваш VM неправильно конфигурируется вместо того, чтобы там быть проблемой с Вашим кодом.

1
27.01.2020, 22:24

Теги

Похожие вопросы