x86 Posted November 11, 2017 Posted November 11, 2017 Прошу помощи у знатоков. Обновили сервер на i7-7820X на Gigabyte X299 UD4. Ядро 4.1.44 нормально работало на прежнем i5-3570. Теперь при старте в dmesg получаю: [ 0.000000] tsc: Fast TSC calibration failed [ 0.000000] tsc: Unable to calibrate against PIT [ 0.000000] tsc: No reference (HPET/PMTIMER) available [ 0.000000] tsc: Marking TSC unstable due to could not calculate TSC khz Соответственно в cat /sys/devices/system/clocksource/clocksource0/available_clocksource refined-jiffies jiffies Даже hpet не включает ибо [ 0.241000] pci 0000:00:1f.0: RCBA disabled; cannot force enable HPET BIOS последней версии ( F4 ), Hyper-Threading и всевозможное энергосбережение в Setup выключено . В оциях загрузки ядра добавил intel_pstate=disable tsc=reliable clocksource=tsc processor.max_cstate=1 intel_idle.max_cstate=0 - толку никакого. Вставить ник Quote
s.lobanov Posted November 11, 2017 Posted November 11, 2017 Судя по описанию, это hw баг cpu, который лечится микрокодом, т.е. надо использовать ядры из последних, в которые он включен Вставить ник Quote
x86 Posted November 11, 2017 Author Posted November 11, 2017 (edited) Да, я тоже склоняюсь к мнению, что это аппаратная проблема. Microcode, насколько мне известно обновляется на уровне BIOS и его я обновил до версии F4 от 20.09.17, но проблему это не решило. Edited November 11, 2017 by x86 Вставить ник Quote
NiTr0 Posted November 11, 2017 Posted November 11, 2017 50 минут назад, x86 сказал: Microcode, насколько мне известно обновляется на уровне BIOS не только. Вставить ник Quote
s.lobanov Posted November 11, 2017 Posted November 11, 2017 Да просто возьмите любой livecd с актуальным ядром и проверьте Вставить ник Quote
x86 Posted November 11, 2017 Author Posted November 11, 2017 Да, придется пробовать свежее ядро. Но там могут быть свои проблемы - вот 4.4 дико тормозило при загрузке правил iptables/шейперов, в 4.9 периодически пропадали локальные сессии по TCP. Вставить ник Quote
vop Posted November 11, 2017 Posted November 11, 2017 Debian > aptitude search microcode p amd64-microcode - Processor microcode firmware for AMD CPUs i intel-microcode - Processor microcode firmware for Intel CPUs p microcode.ctl - Intel IA32/IA64 CPU Microcode Utility (transitional package) Вставить ник Quote
x86 Posted November 12, 2017 Author Posted November 12, 2017 Поставил 4.13.12 - осталось в available_clocksource только tsc - т.е. проблема решилась. Правда в опциях загрузки оставил tsc=reliable clocksource=tsc В BIOS выключил Intel Speed Shift - иначе выдавало дампы. Попутно пришлось собрать iproute2-4.13.0 c мелкой правкой исходников( иначе не собиралось ) - со старым тоже были дампы. Теперь остается посмотреть на стабильность работы нового ядра. Вставить ник Quote
x86 Posted November 12, 2017 Author Posted November 12, 2017 Вот и первая проблема - отстают часы. Т.е. tsc все-таки не reliable и как с этим бороться пока не понятно. Вставить ник Quote
x86 Posted November 12, 2017 Author Posted November 12, 2017 5 часов назад, s.lobanov сказал: Добавьте еще acpi=off Спасибо за совет. Ну, а по теме ничего хорошего. Под нагрузкой одно ядро уперлось в 100%( при этом прерывания были распределены равномерно по ядрам ), а потом пошли и дампы. В общем вернулся на 4.1.44 и полностью исключил использование tc( оно использовалось для QoS и шейпинга входящего трафика ). Пока работает, больше желания его мучить нет. В чем проблема c tsc - непонятно, но скорее всего что-то с самим процессором( в процессе поиска встречал сообщения на немецких форумах, что включенный HPET сильно влияет на производительность Windows в играх ). Мораль сей басни такова - не нужно спешить покупать сильно новое - в нем может быть полно глюков( увы, уровень образования упал не только у нас, но и на западе тоже ). Вставить ник Quote
Ivan_83 Posted November 12, 2017 Posted November 12, 2017 14 часов назад, x86 сказал: Вот и первая проблема - отстают часы. А чего ты вообще взял что проблема с часами имеет отношение к таймеру!? Если ты не в курсе, то часы как бы там независимые, у них своё питание, свой кварц, свои счётчики, срать им на твои таймеры и окружающий мир. 14 часов назад, x86 сказал: Т.е. tsc все-таки не reliable и как с этим бороться пока не понятно. Перепаять кварц/допаять кондёры/настроить ntpd/сдать по гарантии. 8 часов назад, x86 сказал: В чем проблема c tsc - непонятно, но скорее всего что-то с самим процессором( в процессе поиска встречал сообщения на немецких форумах, что включенный HPET сильно влияет на производительность Windows в играх ). Мораль сей басни такова - не нужно спешить покупать сильно новое - в нем может быть полно глюков( увы, уровень образования упал не только у нас, но и на западе тоже ). Я тебе на это вообще ничего доброго сказать не могу. HPET появился уже лет 10 как минимум, можешь откатится на пень3, там этого точно не было %) Каким образом проблемы дебилов виндо геймеров связаны с тобой тоже не понятно. HPET это вообще радость в чистом виде. Вместо того чтобы задрачивать систему прерываниями, как койнить tsc и прочий старый шлак, HPET позволяет с высокой точность задать интервал через который он должен будет сгенерировать прерывание один раз или постоянно с таким интервалом их генерировать. На системном уровне это означает меньше ненужных прерываний и намного проще работу вообще всех таймеров в системе и системы шедулинга потоков. ОС просто перенастраивает HPET таймер на время когда должен сработать следующий таймер и засыпает/занимается своими делами. В системе как правило не один а несколько таких таймеров, один уходит монопольно планировщику потоков, а второй под все таймеры. Вставить ник Quote
x86 Posted November 13, 2017 Author Posted November 13, 2017 9 часов назад, Ivan_83 сказал: А чего ты вообще взял что проблема с часами имеет отношение к таймеру!? Если ты не в курсе, то часы как бы там независимые, у них своё питание, свой кварц, свои счётчики, срать им на твои таймеры и окружающий мир. Вообще-то культурные незнакомые люди обращаются на вы. Теперь по существу - clocksource он как-бы намекает своим названием откуда берется источник квантов для таймера. Это и подтверждает тот факт, что при источнике refined_jiffies часы идут нормально, а при нестабильном tsc - нет. 9 часов назад, Ivan_83 сказал: Перепаять кварц/допаять кондёры/настроить ntpd/сдать по гарантии. Я тебе на это вообще ничего доброго сказать не могу. HPET появился уже лет 10 как минимум, можешь откатится на пень3, там этого точно не было %) Каким образом проблемы дебилов виндо геймеров связаны с тобой тоже не понятно. HPET это вообще радость в чистом виде. Вместо того чтобы задрачивать систему прерываниями, как койнить tsc и прочий старый шлак, HPET позволяет с высокой точность задать интервал через который он должен будет сгенерировать прерывание один раз или постоянно с таким интервалом их генерировать. На системном уровне это означает меньше ненужных прерываний и намного проще работу вообще всех таймеров в системе и системы шедулинга потоков. ОС просто перенастраивает HPET таймер на время когда должен сработать следующий таймер и засыпает/занимается своими делами. В системе как правило не один а несколько таких таймеров, один уходит монопольно планировщику потоков, а второй под все таймеры. tsc как раз и позволяет обойтись без генерации прерываний, что делает работу со временем весьма дешевой с точки зрения расходов CPU. C замечанием по HPET согласен, но суть вопроса в том что в available_clocksources его нет, в BIOS включить его возможности нет и соответственно нельзя его использовать для работы со временем. Проблемы-же геймеров на винде с HPET на данном процессоре еще раз говорят о том, что что-то не так с этим процессором. Еще раз повторю - на i5-3570 все было нормально. Вставить ник Quote
Ivan_83 Posted November 13, 2017 Posted November 13, 2017 Так я не культурный, можешь забанить меня. 2 часа назад, x86 сказал: Теперь по существу - clocksource он как-бы намекает своим названием откуда берется источник квантов для таймера. Это и подтверждает тот факт, что при источнике refined_jiffies часы идут нормально, а при нестабильном tsc - нет. Почитай откуда берутся часы. Какой может быть клоксорс когда у тебя комп выключен из розетки а часы тикают? В 11/11/2017 в 20:03, vop сказал: aptitude search microcode Я так понимаю ты забил на обновления микрокода ручками? 2 часа назад, x86 сказал: tsc как раз и позволяет обойтись без генерации прерываний, что делает работу со временем весьма дешевой с точки зрения расходов CPU. https://en.wikipedia.org/wiki/Time_Stamp_Counter Вероятно прерывания берутся от: https://en.wikipedia.org/wiki/Intel_8254 Ещё раз: прерывания нужны чтобы ОС могла быть многозадачной. Если у тебя нет прерываний то ОС тебе не может гарантировать что потоки будут переключатся тогда, когда надо планировщику а не как повезёт. 2 часа назад, x86 сказал: Проблемы-же геймеров на винде с HPET на данном процессоре еще раз говорят о том, что что-то не так с этим процессором. Геймеры жаловались на HPET и в райзене, я так понимаю у них HPET главный враг на любой платформе. При их уровне часто там аргументации вообще нет, сплошь наблюдения натуралистов. 2 часа назад, x86 сказал: Еще раз повторю - на i5-3570 все было нормально. Если с i7-7820X не срастается, может выкинуть его? :) Вставить ник Quote
x86 Posted November 13, 2017 Author Posted November 13, 2017 1 час назад, Ivan_83 сказал: Почитай откуда берутся часы. Какой может быть клоксорс когда у тебя комп выключен из розетки а часы тикают? Ну да, расскажи мне про RTC как источник времени и особенно про его точность. Еще раз, для тех кто в танке - объясни почему при clocksource refined-jiffies время не сбивается, а при нестабильном tsc - серъезно запаздывает. 1 час назад, Ivan_83 сказал: Я так понимаю ты забил на обновления микрокода ручками? Последнее обновление microcode на сайте Intel'a 0x2000022 от 07.07.17 cpuinfo у меня сейчас показывает версию 0x200002b ( и я так понимаю оно берет его из BIOS ). 1 час назад, Ivan_83 сказал: https://en.wikipedia.org/wiki/Time_Stamp_Counter Вероятно прерывания берутся от: https://en.wikipedia.org/wiki/Intel_8254 Ещё раз: прерывания нужны чтобы ОС могла быть многозадачной. Если у тебя нет прерываний то ОС тебе не может гарантировать что потоки будут переключатся тогда, когда надо планировщику а не как повезёт. Ты путаешь понятие таймера и времени. Бесспорно, таймер вещь совершенно необходимая и лучшее из всего, что на данный момент есть - это HPET( но кстати у меня он тоже недоступен почему-то ) А вот для работы со временем лучше всего обходится без прерываний вообще и tsc здесь совершенно незаменим так как у него минимальные накладные расходы. Для задач Traffic Control нам как-раз нужно измерение интервала времени между двумя событиями. 1 час назад, Ivan_83 сказал: Геймеры жаловались на HPET и в райзене, я так понимаю у них HPET главный враг на любой платформе. При их уровне часто там аргументации вообще нет, сплошь наблюдения натуралистов. Проверяется просто - берется более ранний процессор, и если там все работает, значит проблема в железе. Ryzen и Broadwell X - это новые архитектуры, и вполне возможно, что внутри содержат много недоработок. Вот ознакомился с Errata на Xeon - 92 проблемы со статусом No Fix за период с 07.2016 по 09.2017 1 час назад, Ivan_83 сказал: Если с i7-7820X не срастается, может выкинуть его? :) Можно использовать для других целей. Или без Traffic Control, как я сейчас и делаю. Вставить ник Quote
Ivan_83 Posted November 13, 2017 Posted November 13, 2017 3 минуты назад, x86 сказал: Еще раз, для тех кто в танке - объясни почему при clocksource refined-jiffies время не сбивается, а при нестабильном tsc - серъезно запаздывает. Я хз как там линух внутри устроен, см код :) 6 минут назад, x86 сказал: cpuinfo у меня сейчас показывает версию 0x200002b ( и я так понимаю оно берет его из BIOS ). Может посмотреть/поискать откуда оно берётся? 16 минут назад, x86 сказал: Ты путаешь понятие таймера и времени. Да, действительно. kern.timecounter.choice: TSC-low(1000) ACPI-fast(900) i8254(0) HPET(950) dummy(-1000000) kern.eventtimer.choice: HPET(550) HPET1(440) HPET2(440) HPET3(440) HPET4(440) 16 минут назад, x86 сказал: А вот для работы со временем лучше всего обходится без прерываний вообще и tsc здесь совершенно незаменим так как у него минимальные накладные расходы. Как видишь рейтинг HPET немного ниже TSC. Для считывания используется смапленные в память регистры, это тоже довольно быстро. 19 минут назад, x86 сказал: Ryzen и Broadwell X - это новые архитектуры, и вполне возможно, что внутри содержат много недоработок. Вот ознакомился с Errata на Xeon - 92 проблемы со статусом No Fix за период с 07.2016 по 09.2017 По райзену инфа закрытая, насколько я знаю, а я только сегодня тут накорябал свои впечатления: По интелу - у каби ещё больше список был :) Для роутеров и прочего жующего прерывания а не числа лучше всякие i5, нет переплаты за бесполезный/вредный HT. Вставить ник Quote
x86 Posted March 1, 2018 Author Posted March 1, 2018 Проблема решилась - поставил ядро 4.14.22 и tsc заработал. Попутно ускорил работу iptables в 7(!) раз по сравнению с 4.9 и на 13% по сравнению с 4.1 Вставить ник Quote
snoof Posted March 6, 2018 Posted March 6, 2018 Ускорение установкой нового ядра или ещё попутная оптимизация была? Если была оптимизация, пожалуйста поделитесь :) Вставить ник Quote
x86 Posted March 29, 2018 Author Posted March 29, 2018 Измерения производились синтетическими тестами iptables на разных ядрах. Что касается оптимизации - используется ipset + бинарный поиск по цепочкам ( с автогенерацией оных ) а иначе для одного из BRAS с iptables -S | wc -l 199918 оно бы просто тормозило. Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.