Возникла такая проблема, работающая программа использует только один процессор из четырёх. Подскажите как назначить процессу правильный bitmask. Это можно сделать средствами linux? Есть исходники программы.
Linux Slackware 11.Заранее спасибо
Плз help.
>Возникла такая проблема, работающая программа использует только один процессор из четырёх. Подскажите
>как назначить процессу правильный bitmask. Это можно сделать средствами linux? Есть
>исходники программы.
>
>
>Linux Slackware 11.
>
>Заранее спасибо
если программа не многопоточная, то она _в_принципе_не_может_ использовать более одного процессора\^P^/
>>Возникла такая проблема, работающая программа использует только один процессор из четырёх. Подскажите
>>как назначить процессу правильный bitmask. Это можно сделать средствами linux? Есть
>>исходники программы.
>>
>>
>>Linux Slackware 11.
>>
>>Заранее спасибо
>если программа не многопоточная, то она _в_принципе_не_может_ использовать более одного процессора
>
>\^P^/
На винде её можно настроить нормально, на linux незнаю.
Как вообще задать соответсвие программы процессору(ам).
>>>Возникла такая проблема, работающая программа использует только один процессор из четырёх. Подскажите
>>>как назначить процессу правильный bitmask. Это можно сделать средствами linux? Есть
>>>исходники программы.
...
>>если программа не многопоточная, то она _в_принципе_не_может_ использовать более одного >>процессора
>>\^P^/Если яблоко неделимое, то его _в_принципе_нельзя_ поделить между более чем одним лицом.
>На винде её можно настроить нормально, на linux незнаю.
>Как вообще задать соответсвие программы процессору(ам).У вас видимо оно делимое, тогда как же вы его делите на Винде?
>>>>Возникла такая проблема, работающая программа использует только один процессор из четырёх. Подскажите
>>>>как назначить процессу правильный bitmask. Это можно сделать средствами linux? Есть
>>>>исходники программы.
>...
>>>если программа не многопоточная, то она _в_принципе_не_может_ использовать более одного >>процессора
>>>\^P^/
>
>Если яблоко неделимое, то его _в_принципе_нельзя_ поделить между более чем одним лицом.
>
>
>>На винде её можно настроить нормально, на linux незнаю.
>>Как вообще задать соответсвие программы процессору(ам).
>
>У вас видимо оно делимое, тогда как же вы его делите на
>Винде?
Она сама по себе умеет делать это в винде. В конфиге её можно настроить под кол-во процессоров (но тока в винде, в linux она не настраивается), можно оставить default и в taskmgr назначать соответсвие как обычным программам.
Написана на c++ может кто знает как можно дописать, однако невериться что нельзя настроить стандартными методами.
[...]
>>У вас видимо оно делимое, тогда как же вы его делите на Винде?
>
>Она сама по себе умеет делать это в винде. В конфиге её
>можно настроить под кол-во процессоров (но тока в винде, в linux
>она не настраивается), можно оставить default и в taskmgr назначать соответсвие
>как обычным программам.
>Написана на c++ может кто знает как можно дописать, однако невериться что
>нельзя настроить стандартными методами.
какая разница на c++ или джаве или еще на чем?! речь о другом:
1) сколько процессов запускается? всегда один? (смотреть ps/pstree/top/...)
2) если процесс один, то ldd на его имидж. смотреть на предмет наличия линковки libpthreads (хотя это не 100%, может быть слинковано статически).
last resort:
strings -a <programbinary> | grep -i thread
(хотя, прога стрипнута наверняка, т.ч. вряд-ли поможет. nm или nm -D? как вариант, но опять же слепы в случае статически слинкованого стрипнутого бинарника)
если результат отрицательный по этим пунктам (процесс один и треды не упоминаются нигде) то на линухе это яблоко 99% неделимое.ну и под конец дурацкий вопрос: а ядро (линух) с поддержкой ли SMP собрано?
(чем видел, что процессор только один юзается? top'ом?)\^P^/
>[...]
Собрано с симетиричной SMP.
Процесс в top или ps -aux запускается только один.То что вы написали 2ым пунктом, долго ломал голову, не смог разрбраться, это воспрос или указания как сделать?
Обьясните попонятнее плз.
>>[...]
>
>
>Собрано с симетиричной SMP.
>Процесс в top или ps -aux запускается только один.
>
>То что вы написали 2ым пунктом, долго ломал голову, не смог разрбраться,
>это воспрос или указания как сделать?
эээ.. это указание как посмотреть, многопоточная ли программа.
кста, я тут же на опеннете вчера видел упоминание "режима тредов" в top'е. интересно, как оно работает (будет ли работать в случае статической линковки libpthreads)имя исполняемого модуля, отображаемое в top/ps? (это может быть не тот файл, которым программа изначально запускается. покажите-ка рез-т:
file <имя_исполняемого_модуля>\^P^/
>имя исполняемого модуля, отображаемое в top/ps? (это может быть не тот файл,
>которым программа изначально запускается. покажите-ка рез-т:
>file <имя_исполняемого_модуля>
>
>\^P^/ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), not stripped
>ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses
>shared libs), not stripped
опа-аньки! ну то, что динамикали линкед - я предполагал, верней надеялся на это. но то, что она еще и not stripped - это вообще сюрприз!давай сюда:
ldd <имя_исполняемого_модуля>
и
nm <имя_исполняемого_модуля>
>>ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses
>>shared libs), not stripped
>опа-аньки! ну то, что динамикали линкед - я предполагал, верней надеялся на
>это. но то, что она еще и not stripped - это
>вообще сюрприз!
>
>давай сюда:
>ldd <имя_исполняемого_модуля>
>и
>nm <имя_исполняемого_модуля>
root@wow:/mangos/BIN/bin# ldd mangos-worldd
linux-gate.so.1 => (0xffffe000)
libssl.so.0 => /usr/lib/libssl.so.0 (0xb7f5e000)
libmangosscript.so.0 => /mangos/BIN/lib/libmangosscript.so.0 (0xb7f57000)
libmysqlclient_r.so.15 => /usr/local/lib/mysql/libmysqlclient_r.so.15 (0xb7eea000)
libz.so.1 => /usr/lib/libz.so.1 (0xb7ed8000)
libcrypt.so.1 => /lib/tls/libcrypt.so.1 (0xb7eaa000)
libnsl.so.1 => /lib/tls/libnsl.so.1 (0xb7e94000)
libZThread.so.0 => /mangos/BIN/lib/libZThread.so.0 (0xb7e55000)
libstdc++.so.6 => /usr/local/lib/libstdc++.so.6 (0xb7d71000)
libpthread.so.0 => /lib/tls/libpthread.so.0 (0xb7d5f000)
libm.so.6 => /lib/tls/libm.so.6 (0xb7d3c000)
libgcc_s.so.1 => /usr/local/lib/libgcc_s.so.1 (0xb7d31000)
libc.so.6 => /lib/tls/libc.so.6 (0xb7c02000)
libcrypto.so.0 => /usr/lib/libcrypto.so.0 (0xb7ac8000)
libdl.so.2 => /lib/tls/libdl.so.2 (0xb7ac4000)
/lib/ld-linux.so.2 (0xb7fa8000)
root@wow:/mangos/BIN/bin# nm mangos-worldd
РЕЗУЛЬТИАТ ВЫЛОЖИЛ СЮДЫ: http://62.105.131.53/nmofmangos-wordd.txt
дааааа, блин... тяжелый случай.
Zthread использовался, очевидно, чтобы абстрагироваться от платформы (есь вынь версия, и там трэдинг работает как надо). имхо эта либа и косячит. инфы хватает по ней, только противоречиво все как-то. и про какие-либо настройки - ничего.\^P^/
>дааааа, блин... тяжелый случай.
>Zthread использовался, очевидно, чтобы абстрагироваться от платформы (есь вынь версия, и там
>трэдинг работает как надо). имхо эта либа и косячит. инфы хватает
>по ней, только противоречиво все как-то. и про какие-либо настройки -
>ничего.
>
>\^P^/И чё же делать? ))
>И чё же делать? ))
какие-нть конфиги у проги есть? посмотри на предмет пула тредов, бывает ли там че.
и вообще что-бы-то ни было касательно ZThreads. 99% прога сама не может "разложиться", хотя тероетически умеет это. Ось с ее настройками тут ни при делах.P.S. с этого момента начинается шаманство с элементами телепатии. результат не гарантирован вообще.
\^P^/
>[оверквотинг удален]
>какие-нть конфиги у проги есть? посмотри на предмет пула тредов, бывает ли
>там че.
>и вообще что-бы-то ни было касательно ZThreads. 99% прога сама не может
>"разложиться", хотя тероетически умеет это. Ось с ее настройками тут ни
>при делах.
>
>P.S. с этого момента начинается шаманство с элементами телепатии. результат не гарантирован
>вообще.
>
>\^P^/вообще то в конфиге мангоса выставляется параметр количества использованных процессоров