Добрый! Примерно так. Прогоняем докер-образ на эталонном submission в тестовом соревновании. Который будет использовать синтаксические конструкции новой версии языка, или библиотеки которые мы зашили в докер-образ.
Хм. Действительно. Да это мой косяк.
Конфигурация NUMA используется в проде, поэтому и в статье ее упомянул. На ноуте она повлиять конечно не могла.
Проведу повторные измерения для статьи на серверном окружении и внесу правки. А пока сделаю приписку в разделе про NUMA. Спасибо
Тем, что это все равно не дает гарантий от просадки производительности из-за скедулнга. Можете во время выполнения башника, который вы скидывали во время ветки, запустить его еще раз (сэмулировать выполнение еще одногорешения на этой же железке). Время выполнения просядет.
Так что решение нужно приколачивать или к ядру или к всему серверу целиком. К ядру все-таки лучше
Нет в продакшене xeon'ы
И они неизбежно скедулят процессы. Что приводит к разбросу времени выполнения решения
А про троттлинг я выше где-то в этой ветке писал
Сейчас кластер серверов, которые занимаются проверкой решений, использует 720 ядер. Вы предлагаете не использовать их больше чем на 2/3? И при этом гарантировать что нагрузка не будет превышать 2/3 на каждом из серверов?
Зачем? Я думал, цель — получить стабильное время выполнения, а не наоборот.
Цель оптимизаций — добиться стабильного выполнения. А цель тестового стенда — проверка стабильности и поиск способа которым эту стабильность можно сломать)
Время выполнения должно быть стабильным и под нагрузкой и без нее.
Провел повторные замеры простым башем: real 0m8.280s
user 0m7.828s
sys 0m0.452s
real 0m7.282s
user 0m6.750s
sys 0m0.532s
real 0m7.605s
user 0m7.127s
sys 0m0.456s
real 0m7.338s
user 0m6.877s
sys 0m0.460s
real 0m9.004s
user 0m8.435s <- вот тут я запустил среду разработки
sys 0m0.568s
real 0m10.179s
user 0m9.571s
sys 0m0.592s
Можно во время теста попользоваться каким-нибудь жадным до CPU приложением или нагрузить ядра одним из способов из статьи.
Попробуйте подключить к процессору нормальное электропитание и достаточное охлаждение. Или хотя бы воткнуть ноутбук, на котором вы делаете замеры, в розетку. С чего вдруг процессор неизбежно должен троттлить?
Когда речь идет про тестовый стенд, то можно быть уверенным и в охлаждении, и в питании. Но вот контроллер стойки в ДЦ может в определенный момент решить, что пришло время ронять частоту и приложение на это уже никак повлиять не сможет.
Так что во время крупного соревнования лучше считать, что троттлинг не только возможен, но и неизбежен, чем потом разбираться с последствиями)
Попробовать поиграть политиками скедулинга процесса и таким образом добиться изолированного исполнения? Интересная мысль в целом.
Тут правда есть особенность, что некоторые решения могут форкаться и создавать потоки. Но это не то чтобы блокер. Спасибо за идею — попробую на досуге)
Пожалуйста!)
На самом деле не влияет, т.к. input.txt — это не файл, а UNIX domain socket.
Так что для передачи инпута в решение в любом случае используется не файловая система, а буферы памяти ядра
В прошлых чемпионатах не было олимпиадного направления, поэтому в бекенд треке мог получиться перекос в алгоритмические задачи. Сейчас мы сделали отдельный трек Алгоритм и в Бекенде будут более разнообразные задачи, например, на реализацию и использование http api и работу с БД. Вы сможете ознакомиться с задачами на пробном туре, который откроется 21 сентября.
Information
Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Добрый!
Примерно так. Прогоняем докер-образ на эталонном submission в тестовом соревновании. Который будет использовать синтаксические конструкции новой версии языка, или библиотеки которые мы зашили в докер-образ.
В общем оффтоп, но отвечу)
1) Планируется хороший публичный API. На плагин для IDE точно хватит
2) А такая штука уже в принципе на страпелях, хотя она несколько сложнее, чем шаблонизатор
Т.е второе вероятно появится раньше первого
В данном случае ключи приведены в качестве примера строки компиляции. Можно читать это как "способ скомпилировать решение"
Конфигурация NUMA используется в проде, поэтому и в статье ее упомянул. На ноуте она повлиять конечно не могла.
Проведу повторные измерения для статьи на серверном окружении и внесу правки. А пока сделаю приписку в разделе про NUMA. Спасибо
Так что решение нужно приколачивать или к ядру или к всему серверу целиком. К ядру все-таки лучше
И они неизбежно скедулят процессы. Что приводит к разбросу времени выполнения решения
А про троттлинг я выше где-то в этой ветке писал
Сейчас кластер серверов, которые занимаются проверкой решений, использует 720 ядер. Вы предлагаете не использовать их больше чем на 2/3? И при этом гарантировать что нагрузка не будет превышать 2/3 на каждом из серверов?
Хм. Спасибо за статью — это пригодится.
Взял на заметку)
Цель оптимизаций — добиться стабильного выполнения. А цель тестового стенда — проверка стабильности и поиск способа которым эту стабильность можно сломать)
Время выполнения должно быть стабильным и под нагрузкой и без нее.
Провел повторные замеры простым башем:
real 0m8.280s
user 0m7.828s
sys 0m0.452s
real 0m7.282s
user 0m6.750s
sys 0m0.532s
real 0m7.605s
user 0m7.127s
sys 0m0.456s
real 0m7.338s
user 0m6.877s
sys 0m0.460s
real 0m9.004s
user 0m8.435s <- вот тут я запустил среду разработки
sys 0m0.568s
real 0m10.179s
user 0m9.571s
sys 0m0.592s
Можно во время теста попользоваться каким-нибудь жадным до CPU приложением или нагрузить ядра одним из способов из статьи.
Когда речь идет про тестовый стенд, то можно быть уверенным и в охлаждении, и в питании. Но вот контроллер стойки в ДЦ может в определенный момент решить, что пришло время ронять частоту и приложение на это уже никак повлиять не сможет.
Так что во время крупного соревнования лучше считать, что троттлинг не только возможен, но и неизбежен, чем потом разбираться с последствиями)
Тут правда есть особенность, что некоторые решения могут форкаться и создавать потоки. Но это не то чтобы блокер. Спасибо за идею — попробую на досуге)
На самом деле не влияет, т.к. input.txt — это не файл, а UNIX domain socket.
Так что для передачи инпута в решение в любом случае используется не файловая система, а буферы памяти ядра