Показать полную графическую версию : Запуск процесса на нескольких ядрах в линукс минт
StarMAUGLI
24-08-2016, 18:26
Добрый день.
Попал в руки старый (в прошлом игровой) комп с 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/kings_bounty_printsessa_v_dospehah_uluchshaem_proizvoditelnost_na_2_4_yadernyh_protsessorah-48438/ есть. А вот для линукса? Говорят в нем можно настроить все что угодно. Но с какого края зайти?
ruslandh
24-08-2016, 18:41
Если в минт ядро используется многоядерное, то это проблема приложения (собрано без поддержки потоков).
StarMAUGLI
24-08-2016, 20:38
это проблема приложения (собрано без поддержки потоков) »
Скорее всего - да. Я тоже думаю, что это проблема приложения. Но если для виндовзбазивных ОС есть решение, как запустить под два потока, то неужели под линукс нету?
установил через PlayOnLinux клиент Steam »
Попробуй без PlayOnLinux
Известен ли кому-нибудь, какой-нибудь способ заставить принудительно работать над процессом несколько (2-4) ядер процессора? »
Нет, это принципиально невозможно, если только сама программа (игра) не реализует многопоточность. А учитывая, что речь о
решил запустить одну из старых игр »
то многопоточностью там и не пахнет.
Но если для виндовзбазивных ОС есть решение, как запустить под два потока, то неужели под линукс нету? »
И для венды нет - не надо рассазывать сказок. Один поток и есть один поток. Если что-то распараллеливается, то там больше одного потока в самой программе.
ruslandh
24-08-2016, 21:23
Зависит от кода приложения. В лучшем случае, если код программы открытый, то пересобрать программу с соответствующими библиотеками. Как я понимаю, приложение старое, собрано под один процессор, и думаю не современный. Тут ничего сделать нельзя.
то пересобрать программу с соответствующими библиотеками »
Дело не в библиотеках, а в самой логике работы программы. Иногда распараллелить можно, иногда нельзя просто исходя из самой задачи. К слову, рендер в играх как раз к таким задачам относится. Максимум - можно вынести в отдельные потоки вспомогательный код.
StarMAUGLI
24-08-2016, 22:37
Попробуй без PlayOnLinux »
Я новичок в линуксе. Почитав статьи по установке и настройке вайна я боюсь не справиться.
И для венды нет - не надо рассазывать сказок. »
Специально скачал программу из статьи (CPU Control) и провел эксперимент на втором доступном компьютере.
Параметры у него, правда, чуть похуже:
Материнская плата такая же. Core2Duo E6750, 4 гб ОЗУ, такая же видеокарта NV GTX 650Ti, Win7
После запуска игры без данной программы, кулер на процессоре шел на взлет. Зависаний, правда, не дождался. Не терпелив.
После установки CPU Control наступила тишина. Так что наверное какое-то решение все-таки есть.
И у меня к данному вопросу интерес скорее академический. Если для винды решаемо, то может найдутся программисты, что и для линуха что-то подобное придумают (а может быть уже придумали?).
StarMAUGLI, чудес не бывает. Если игра шла на одном ядре и оно сильно грелось - кулел крутился быстро. Когда игра стала пеиодически перебрасываться с одного ядра на другое (Линь сам это делает, если что), то средний нагрев мог быть ниже и от этого кулер заткнулся. Никакого отношения к многопоточности это не имеет. И ещё это не добавило ни капли производительности. Точнее даже несколкьо снизило из-за накладных расходов на переключения контекста.
StarMAUGLI
25-08-2016, 09:52
shisik, Спасибо, за разъяснение.
Производительность в данном случае не важна. Скорее комфорт пользователя (тишина и по возможности отсутствие зависаний).
(Линь сам это делает, если что) »
(этого по системному монитору не заметно: в минте, в системном мониторе график загрузки каждого ядра окрашен разным цветом)
Жаль, что решения для моей проблемы под линуксом еще не придумали. :(
и по возможности отсутствие зависаний »
Это и есть производительнсоть.
(этого по системному монитору не заметно: в минте, в системном мониторе график загрузки каждого ядра окрашен разным цветом) »
Разве? А я вот противоположное наблюдаю:
http://i79.fastpic.ru/big/2016/0825/69/d78adb89ec0cbb51e6aeba0f7f6ec769.png
Так выглядит загрузка процессора по ядрам, если запустить один тяжелый поток:
xz -z -c /dev/urandom > /dev/null
Как видно, поток периодически перекидывается с ядра на ядро. Хотя, конечно, это от ядра зависит. В смысле от ядра ОС. Если что, у меня планировщик low-latency desktop.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.