Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление
  2. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  3. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление
  4. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.

Идея CPU Affinity

Тема в разделе "Запросы на разработку плагинов", создана пользователем Reality_SC, 13 янв 2016.

  1. GoodCoder

    GoodCoder Активный участник Пользователь

    Баллы:
    76
    Если у тебя всего один сервер на машине, то не имеет смысла. Бороться за ресурсы ему не с кем.
     
  2. Хостинг MineCraft
    <
  3. slavik123123123

    slavik123123123 Старожил Пользователь

    Баллы:
    143
    Имя в Minecraft:
    Leymooooooooooo
    Суть то в том чтобы отдать целое ядро под основной цикл. А другие на растерзание потоками из других плагинов.
     
  4. Shevchik

    Shevchik Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    1-3, выбирай любой.
     
    Последнее редактирование: 17 янв 2016
  5. slavik123123123

    slavik123123123 Старожил Пользователь

    Баллы:
    143
    Имя в Minecraft:
    Leymooooooooooo
    Код:
    [23:40:51] [Server thread/INFO]: [MainThreadAffinity] Enabling MainThreadAffinity v1.0
    [23:40:51] [Server thread/INFO]: [MainThreadAffinity] Main server thread is not locked to cpu 2
    Debian 8 x86_64
    java -jar MainThreadAffinity.jar 2 написал перед запуском сервера. В конфиге указал cpuId: 2[DOUBLEPOST=1452999560,1452984198][/DOUBLEPOST]Ну а так вроде работает java jar .... Вся нагрузка идет токо на 3 ядро(По htop), а так указывал 2.
     
  6. Shevchik

    Shevchik Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Потому что с 0 расчет. А топ считает с 1.[DOUBLEPOST=1453022798,1453011919][/DOUBLEPOST]Ещё можно поиграться с /dev/cpu_dma_latency чтобы отключить intel C states.[DOUBLEPOST=1453026248][/DOUBLEPOST]А вот и первые проблемы. Дело в том что affinity наследуется всеми тредами созданными из главного потока. А так как главный поток совсем главный, то большинство потоков внутри самой JVM тоже наследуют affinity из-за чего получается что вся java выполняется на ожном ядре. В итоге сейчас наоборот получается только просадка в производительности. Надо как-то цепляться с созданию потоков и выставлять им нужную маску, но проблема в том что это не очнеь быстрое занятие. Так же в принципе помогает установку affinity не на старте сервера, а на пару секунд позже, но это костыль.[DOUBLEPOST=1453027204][/DOUBLEPOST]Переделал плагин, теперь он выставляет Affinity через 30 секунд после старта, теперь всякие GC треды, и тредпулы которые стартуют сам сервер или другие плагины на старте выполняются на других ядрах. Остались только проблемы с потоками которые стартуют плагины не на запуске, а во время выполнения каких-нибудь эвентов, а также с шедулером, посколько ля асинхронных тасков там используется CachedThreadPool, то есть вероятность поток создастся при добавлении таска, а соответственно произойдёт это в главном оптоке и affinity отнаследуется.
     
    Последнее редактирование: 17 янв 2016
  7. Автор темы
    Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Менять время от времени, хотя да, правильнее как-то перехватить Thread.start
     
  8. Shevchik

    Shevchik Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Вернулся к этой теме, на linux есть возможность получить нотификейшен о старте потока, но весь код приходится писать на сях, так что от плагина остался только толкальщик который толкает jni. В данный момент я на отдыхе в Сочи, так что доделать до конца смогу только через недельку.
     

Поделиться этой страницей