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

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

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

One Solution collect form web for “Как сделать многопоточное приложение использовать все ядра на Ubuntu в VMWare?”

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

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

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

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

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

  • Родительский процесс всегда печатает выходные данные после
  • Связанная с SSL «неопределенная ссылка» на libssh2 и libcurl libs при компиляции C на OpenSUSE
  • Можно ли отправлять массивы из bash в программу на C ++?
  • Распространение приложения с .so-файлами?
  • Как скомпилировать Solaris в Debian?
  • Компиляция кода C / C ++ путем включения инструкций сборки препроцессора в исходный файл C / C ++
  • Чтение содержимого заголовка программы в файле ELF
  • Где определена структура blkid_struct_dev?
  • Как скомпилировать программу ac, не выходя из редактора?
  • libstdc ++. so.6: open failed: нет такого файла или каталога
  • Использование adjtimex на сервере Linux
  • Linux и Unix - лучшая ОС в мире.