Intereting Posts
Как предварительно загружать мой .so каждый раз, когда приложение выполняется? Как узнать, какая библиотека и справочная страница будут найдены в первую очередь? Внешний микрофон для гарнитуры, не указанный в Linux Mint 18.1 64-бит на Acer Aspire E 15 libvirt / debian: ограничение доступа пользователя / домена как я могу заставить hdd дать плохие данные сектора URE / плохого сектора? Ubuntu 12.04: случайные зависания Чтение и запись в файл из stdin и stdout Самый быстрый способ открыть все файлы в каталоге с несколькими расширениями файлов в командной строке Обратный отсчет + перерыв в Bash Как подключить внешнюю файловую систему ZFS без слияния / изменения текущей или внешней файловой системы dump directory data в файл для нового / модифицированного сравнения позже на сервере linux Где журналы для последовательного порта (режимы энергосбережения, в частности) Безопасность с переадресацией IP-адресов ядра включена Как вернуть направление для последнего ярлыка параметра? Создание 4-х секционных дисков Linux / Windows USB

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

У меня многопоточное приложение на C ++ (с использованием pThreads), которое обрабатывает массивный плоский файл, который отлично работает в Windows, – использует все четыре ядра на моем маленьком процессоре. Клиент хочет запустить тот же код в Red Hat на пожарной машине 64 Xeon. Поэтому я скомпилирую его здесь (g ++), запустил его на Ubuntu на VMWare, а код использовал только один из четырех ядер. Поэтому я думаю, что это проблема VMWare, и я отправляю код клиенту – там, где он делает то же самое (насколько я могу сказать удаленно – mpstat -P ALL показывает, что загруженные CPU не загружены). Нужно ли мне что-то делать, чтобы заставить Red Hat развернуть потоки? Есть что-то, что мне не хватает – я пытаюсь изменить приоритет «хороший», но я чувствую, что что-то не хватает.

Я могу опубликовать код, но, как я уже сказал, отлично работает на Windows, использует pThreads и т. Д.

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

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

  • Если вы используете cat /proc/cpuinfo у своего гостя Ubuntu, вы видите более одного процессора?

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

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