Закрепить за сервером только 1 ядро.

Тема в разделе "Counter-Strike: Global Offensive", создана пользователем Sergey Petrichenko, 12 июл 2015.

  1. Sergey Petrichenko

    Sergey Petrichenko

    Сообщения:
    111
    Симпатии:
    0
    Уважаемые форумчане, у меня имеется следующий скриптик для запуска cерверов
    SCREEN_NAME="CSGO"
    USER="****"
    IP="********"
    PORT="*******"

    DIR_STEAMCMD="/home/game/Steam"
    STEAM_LOGIN="anonymous"
    STEAM_PASSWORD="anonymous"
    STEAM_RUNSCRIPT="$DIR_STEAMCMD/runscript_$SCREEN_NAME"

    DIR_ROOT="/home/game/CSGODeathmatch"
    DIR_GAME="$DIR_ROOT/csgo"
    DIR_LOGS="$DIR_GAME/logs"
    DAEMON_GAME="srcds_run"

    UPDATE_LOG="$DIR_LOGS/update_`date +%Y%m%d`.log"
    UPDATE_EMAIL=""
    UPDATE_RETRY=3

    # Работы сообщества: https://developer.valvesoftware.com/wiki/CSGO_Workshop_For_Server_Operators
    API_AUTHORIZATION_KEY="" # http://steamcommunity.com/dev/registerkey
    WORKSHOP_COLLECTION_ID="125499818" # http://steamcommunity.com/sharedfiles/filedetails/?id=125499818
    WORKSHOP_START_MAP="125488374" # http://steamcommunity.com/sharedfiles/filedetails/?id=125488374

    # Игровые настройки
    # /*Максимольное количество игроков*/
    MAXPLAYERS="32"
    TICKRATE="64"
    # /* Параметры запуска сервера, знать их вы можете на нашем портале http://enix.su/nosteamserver.html в конце данной статьи */
    EXTRAPARAMS="taskset -c 0 -nohltv +sv_pure 0 +sv_lan 0 +game_type 1 +game_mode 2 +mapgroup mg_bomb +map de_dust2"

    PARAM_START="-game csgo -console -usercon -secure -autoupdate -steam_dir ${DIR_STEAMCMD} -steamcmd_script ${STEAM_RUNSCRIPT} -maxplayers_override ${MAXPLAYERS} -tickrate ${TICKRATE} +hostport ${PORT} +ip ${IP} +net_public_adr ${IP} ${EXTRAPARAMS}"
    PARAM_UPDATE="+login ${STEAM_LOGIN} ${STEAM_PASSWORD} +force_install_dir ${DIR_ROOT} +app_update 740 validate +quit"

    ..........
    .............
    ...........
    Далее идут функции которые менять не стоит...

    Суть проблемы в том что когда я ставлю в параметрах запуска taskset -c 0 - процесс прыгает с ядра на ядро. Всего 2 ядра.
    Так вот подскажите, кто знает, как сделать так чтобы 1 сервер использовал только 1 ядро, без прыжков на другие ядра.

    PS На серверах других игр это работает, здесь - нет.
    PSS Лаунчер для запуска я нашел в интернете, сам не писал.
     
    Последнее редактирование: 12 июл 2015
  2. ykpon

    ykpon Владыка Read Only

    Сообщения:
    396
    Симпатии:
    102
  3. Sergey Petrichenko

    Sergey Petrichenko

    Сообщения:
    111
    Симпатии:
    0
  4. ykpon

    ykpon Владыка Read Only

    Сообщения:
    396
    Симпатии:
    102
    Если у тебя два ядра, значит это виртуальные ядра. Одно физическое, два потока.
    То есть, ядро 1 - это поток физического ядра 0, проще говоря.
    У тебя просто процесс между потоками скачет.
    Ничего страшного в этом нет.
    Ну или можешь изменить taskset -c 0 на taskset -c 1.
     
  5. Sergey Petrichenko

    Sergey Petrichenko

    Сообщения:
    111
    Симпатии:
    0
    Мне нужно именно чтобы на 1 потоке было. И не скакало. Под спойлером видно как я прописал. Но оно не работает. На сервере другой игры так прописано и все работает. 1 процесс - 1 ядро. А тут скачет
     
  6. ykpon

    ykpon Владыка Read Only

    Сообщения:
    396
    Симпатии:
    102
    Эм.
     
  7. Sergey Petrichenko

    Sergey Petrichenko

    Сообщения:
    111
    Симпатии:
    0
    Ну я ставлю и taskset -c 0 и taskset -c 1 эффект ноль. возможно нужно в другом месте прописывать? я так понимаю на VDS да и вообщее везде начинается отсчет с 0.... так? Значит 0 это 1 поток и 1 это 2 поток.
     
  8. ykpon

    ykpon Владыка Read Only

    Сообщения:
    396
    Симпатии:
    102
    Пришли-ка вывод:
    Код:
    cat /proc/cpuinfo | egrep "(model name|core id)"
     
  9. Sergey Petrichenko

    Sergey Petrichenko

    Сообщения:
    111
    Симпатии:
    0
    model name : Common KVM processor
    core id : 0
    model name : Common KVM processor
    core id : 1

    Да. Так как я и говорил. Но почему когда я ставлю taskset -c 0 оно прыгает на второй поток....?
     
  10. ykpon

    ykpon Владыка Read Only

    Сообщения:
    396
    Симпатии:
    102
    taskset -c 0 - пиши это в самом начале. Из скрипта запуска убирай и запускай скрипт командой:
    taskset -c 0 sh start.sh
    Или как он у тебя там запускается.
     
    Sergey Petrichenko нравится это.
  11. Sergey Petrichenko

    Sergey Petrichenko

    Сообщения:
    111
    Симпатии:
    0
    Спасибо, завтра попробую, сейчас народу много ;)
     
  12. ykpon

    ykpon Владыка Read Only

    Сообщения:
    396
    Симпатии:
    102
    Смотришь PID процесса сервера через top либо htop и пишешь:
    taskset -p PID -c 0
     
  13. Sergey Petrichenko

    Sergey Petrichenko

    Сообщения:
    111
    Симпатии:
    0
    а если я так taskset -c 0 start.sh при запуске сервера напишу то процесс привяжется к потоку?
     
  14. ykpon

    ykpon Владыка Read Only

    Сообщения:
    396
    Симпатии:
    102
    Так и нужно, чтобы привязался.
    А то, что я написал выше, это чтобы не перезагружать сервер.
     
    Sergey Petrichenko нравится это.
  15. Red4911

    Red4911

    Сообщения:
    110
    Симпатии:
    23
    У меня вообще в конфиг вот такое встроено и нормально )
     
  16. ykpon

    ykpon Владыка Read Only

    Сообщения:
    396
    Симпатии:
    102
    А если процессор с гипер-трейдингом и имеет 2 ядра и 4 потока, например, то 0-1 - ядра, а 2-3 - их потоки.
    1 Ядро+поток = 0,2.
    2 Ядро+поток = 1,3.
     
  17. Red4911

    Red4911

    Сообщения:
    110
    Симпатии:
    23
    У меня проц без HT. С ним надо уже потестить да посмотреть.