Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Общий по Linux (http://forum.oszone.net/forumdisplay.php?f=9)
-   -   Запуск процесса на нескольких ядрах в линукс минт (http://forum.oszone.net/showthread.php?t=318143)

StarMAUGLI 24-08-2016 18:26 2662877

Запуск процесса на нескольких ядрах в линукс минт
 
Добрый день.
Попал в руки старый (в прошлом игровой) комп с Core2Quad Q9300, 8 гигами оперативки, NVIDIA GTX 650Ti и 27 дюймовым монитором от Dell (более подробную информацию по компу забил в конфигурацию, если это кому-то интересно). Решил выделить под Линук Минт пол-терабайта и попробовать пожить с ним как с домашней настольной системой.
В числе прочего установил через PlayOnLinux клиент Steam и решил запустить одну из старых игр. А именно King's Bounty - Warriors of the North. Игра запустилась, но с разной периодичностью (от 20 минут до нескольких часов непрерывной работы) зависает. Ковыряние с игровыми настройками толку не дало. Даже если они опущенные до минимума все равно неизбежно (хотя и не предсказуемо) наступает зависание.

Мониторинг ситуации в системном мониторе показал, что из четырех ядер, загружено (практически до предела) только одно.

Собственно, вопрос:
Известен ли кому-нибудь, какой-нибудь способ заставить принудительно работать над процессом несколько (2-4) ядер процессора? Судя по ссылкам в интернете для винды подобные решения http://www.playground.ru/cheats/king...essorah-48438/ есть. А вот для линукса? Говорят в нем можно настроить все что угодно. Но с какого края зайти?

ruslandh 24-08-2016 18:41 2662887

Если в минт ядро используется многоядерное, то это проблема приложения (собрано без поддержки потоков).

StarMAUGLI 24-08-2016 20:38 2662908

Цитата:

Цитата ruslandh
это проблема приложения (собрано без поддержки потоков) »

Скорее всего - да. Я тоже думаю, что это проблема приложения. Но если для виндовзбазивных ОС есть решение, как запустить под два потока, то неужели под линукс нету?

zai 24-08-2016 21:20 2662917

Цитата:

Цитата StarMAUGLI
установил через PlayOnLinux клиент Steam »

Попробуй без PlayOnLinux

shisik 24-08-2016 21:23 2662920

Цитата:

Цитата StarMAUGLI
Известен ли кому-нибудь, какой-нибудь способ заставить принудительно работать над процессом несколько (2-4) ядер процессора? »

Нет, это принципиально невозможно, если только сама программа (игра) не реализует многопоточность. А учитывая, что речь о

Цитата:

Цитата StarMAUGLI
решил запустить одну из старых игр »

то многопоточностью там и не пахнет.

Цитата:

Цитата StarMAUGLI
Но если для виндовзбазивных ОС есть решение, как запустить под два потока, то неужели под линукс нету? »

И для венды нет - не надо рассазывать сказок. Один поток и есть один поток. Если что-то распараллеливается, то там больше одного потока в самой программе.

ruslandh 24-08-2016 21:23 2662921

Зависит от кода приложения. В лучшем случае, если код программы открытый, то пересобрать программу с соответствующими библиотеками. Как я понимаю, приложение старое, собрано под один процессор, и думаю не современный. Тут ничего сделать нельзя.

shisik 24-08-2016 21:27 2662924

Цитата:

Цитата ruslandh
то пересобрать программу с соответствующими библиотеками »

Дело не в библиотеках, а в самой логике работы программы. Иногда распараллелить можно, иногда нельзя просто исходя из самой задачи. К слову, рендер в играх как раз к таким задачам относится. Максимум - можно вынести в отдельные потоки вспомогательный код.

StarMAUGLI 24-08-2016 22:37 2662933

Цитата:

Цитата zai
Попробуй без PlayOnLinux »

Я новичок в линуксе. Почитав статьи по установке и настройке вайна я боюсь не справиться.

Цитата:

Цитата shisik
И для венды нет - не надо рассазывать сказок. »

Специально скачал программу из статьи (CPU Control) и провел эксперимент на втором доступном компьютере.
Параметры у него, правда, чуть похуже:
Материнская плата такая же. Core2Duo E6750, 4 гб ОЗУ, такая же видеокарта NV GTX 650Ti, Win7

После запуска игры без данной программы, кулер на процессоре шел на взлет. Зависаний, правда, не дождался. Не терпелив.
После установки CPU Control наступила тишина. Так что наверное какое-то решение все-таки есть.
И у меня к данному вопросу интерес скорее академический. Если для винды решаемо, то может найдутся программисты, что и для линуха что-то подобное придумают (а может быть уже придумали?).

shisik 24-08-2016 22:59 2662940

StarMAUGLI, чудес не бывает. Если игра шла на одном ядре и оно сильно грелось - кулел крутился быстро. Когда игра стала пеиодически перебрасываться с одного ядра на другое (Линь сам это делает, если что), то средний нагрев мог быть ниже и от этого кулер заткнулся. Никакого отношения к многопоточности это не имеет. И ещё это не добавило ни капли производительности. Точнее даже несколкьо снизило из-за накладных расходов на переключения контекста.

StarMAUGLI 25-08-2016 09:52 2663009

shisik, Спасибо, за разъяснение.
Производительность в данном случае не важна. Скорее комфорт пользователя (тишина и по возможности отсутствие зависаний).

Цитата:

Цитата shisik
(Линь сам это делает, если что) »

(этого по системному монитору не заметно: в минте, в системном мониторе график загрузки каждого ядра окрашен разным цветом)

Жаль, что решения для моей проблемы под линуксом еще не придумали. :(

shisik 25-08-2016 14:46 2663121

Цитата:

Цитата StarMAUGLI
и по возможности отсутствие зависаний »

Это и есть производительнсоть.

Цитата:

Цитата StarMAUGLI
(этого по системному монитору не заметно: в минте, в системном мониторе график загрузки каждого ядра окрашен разным цветом) »

Разве? А я вот противоположное наблюдаю:

Скрытый текст


Так выглядит загрузка процессора по ядрам, если запустить один тяжелый поток:

Код:

xz -z -c /dev/urandom > /dev/null
Как видно, поток периодически перекидывается с ядра на ядро. Хотя, конечно, это от ядра зависит. В смысле от ядра ОС. Если что, у меня планировщик low-latency desktop.


Время: 17:53.

Время: 17:53.
© OSzone.net 2001-