Сообщество - Лига Сисадминов

Лига Сисадминов

2 235 постов 18 766 подписчиков

Популярные теги в сообществе:

46

Хабр пробивает донья или будьте осторожны в копроблогах - 01

Для ЛЛ: Мало кто знает, например, что у слова "дно" есть форма множественного числа - и это не "днища", а "донья".

С пару лет назад я почти перестал читать Хабр, а с год назад читать перестало иметь смысл – ну окей, печатный орган министерства по борьбе с ИТ репостит статьи «Как мы в едином порыве одобряем устаревание серверов Гугля» или «депутат, которому интернет приносят в папке, сказал что-то». Добавить унылые копроблоги с песнями «у нас все хорошо, вовсе мы и не валялись неделю, ваш МТС» и «приходите к нам, у нас есть откаты» (это не МТС и статью уже удалили).
Фоном идут комментаторы вида «я увидел вашу статью в два ночи и немедленно вспомнил пароль от аккаунта, который не использовал три года, вот насколько мерзотная ваша статья».

Однако, наш дурдом зажигает огни, и к статьям про похудение, поведение, дистанционное управление добавили статьи от маркетологов, которым статью писал ЯндексЖПТ. Ничем иным объяснить такой упешный поиск на ровном месте, на бильярдном столе, ямы с г, объяснить невозможно.

Статья называется “Я проверил, сколько вы платите за одинаковое железо в разных облаках”, и такого донного уровня я не видел с тех пор, как Гилева в очередной раз тыкали носом в абсолютное не понимание того, как работают виртуальные среды. Довели беднягу Гилева – он и комментарии удалил, и профиль удалил.

Что же в статье не так? Для начала, это статья в копроблоге «H3LLO.CLOUD» - то есть, никакой адекватности от нее ждать не приходится, но это еще ладно.

Шутки начинаются с самого начала:
Чем короче полоска, тем, вероятно, больше вас переподписывают или более старое железо предлагают. Что это за график — ниже
Идея очень простая: покупаю одинаковые тарифы на одинаковом железе

Так все же, автор заказывает одинаковое железо или не совсем одинаковое? Похоже, что автор вообще не понимает, что он покупает в облаке, и дальше наглядно это демонстрирует.

Но, перед тем как идти дальше, будет немного Пикабу образовательного.

Образовательное будет обязательно содержать ошибки и опечатки. Я недавно смог спутать Эдди Мерфи и Орландо Джонса, и нет мне оправдания. Ну хоть не спутал с Кетрин Зета Джонс.

Серверная виртуализация работает (в части управления процессорами) очень просто.
Сначала все процессорное время разбивается на слоты (слайсы). Примерно по 0.05 секунды.
Каждые 2-30 миллисекунд (1/1000 секунды) планировщик проверяет нагрузку на физических ядрах, и выдает таймслот (слайс) для исполнения vCPU <> pCPU.
для ESXi таймслот (слайс) по умолчанию – 50 миллисекунд.
vSphere 6.7 U2 & later CPU Scheduler modes: Default, SCA v1 and SCA v2
Performance of vSphere 6.7 Scheduling Options, 2019

Для Hyper-V размеры этого слота в открытой документации где-то были, но это не точно.
Для KVM и Xen мне лень искать.

Дальше начинается магия. Для тех, кто документацию и книги не читает, вся жизнь наполнена чудесами и магией, но, впрочем, как говорил один покойник, any sufficiently advanced technology is indistinguishable from magic.

Все современные сервера идут с преднастройками High performance \ Balanced \ Optimal power, плюс с возможностью авторазгона части ядер, плюс с вариантом «как именно спит процессор» - в C1 или C6, с mwait или без. И заодно угадайте, настраивает ли клауд провайдер свои сервера оптимальным образом, а точнее, проверяет ли их настройки, особенно после обновлений BIOS, и обновляет ли он этот BIOS.

У виртуальных машин могут быть приоритеты. Для процессорных ядер желательно, чтобы данные были в пределах Numa ноды. Для многопроцессорных машин желательно удерживать Strict Co–Scheduling или хотя бы Relaxed Co-scheduling. Дальше есть Latency Sensitivity. И все это время никакой жесткой привязки контекста исполнения процесса виртуальной машины к ядру – нет.

И только после этой магии, раздачи задач на CPU scheduler, начинается явление «переподписки» или соотношение:
«сколько всего виртуальных ядер выделено на все виртуальные машины хоста : сколько ядер (физических) у нас есть. При этом, поскольку у нас (обычно, так то сделать можно) нет никакого жесткого прибивания «этот контекст исполняется здесь», то переподписка может нас волновать, а может и не волновать. Если у вас сервер набит только базами данных, то лучше не надо, если какие-то веб сервисы, то и 4:1 нормально. Если VDI, то и 10:1 ок.
Статьи и заметки по теме:
Acceptable logical CPU oversubscription and vCPU ready time ;
CPU Oversubscription.
Дальше начинается общеизвестный факт, что CPU планировщик в ESXi будет получше планировщика в Linux – KVM (Red hat), что и дает ощутимые бонусы при переподписке. Если же у инженеров облака руки не кривые, то какие-то настройки KVM они покрутят. Но это не точно.

Теперь, вспомнив базу, вернемся к методике измерений в статье.

В качестве тестов был использован Geekbench 6, но не указано – он был взят «из коробки» или собран. Если из коробки, то из какой? Если собран, то как?

Как легко заметить из текста ниже, автор вообще не заморочился привести модель процессора, которую ему, кстати, гипервизор в виртуальную среду отдает. Как и не показал фактическую рабочую частоту процессора при тестах.

Не менее интересно, что автор вместо попыток анализа, написал про ощущение переподписки. Не попытку оценить CPU ready \ Cpu Steal Time. Ничего. Только «ощущения» и «чувствуется». В отрыве от частоты и каких-то метрик, кроме выполнения рандом теста.

В комментариях творится парад бреда, вида “Shared/Dedicated CPU”. Azure, например, оперирует только Azure Dedicated Hosts, в AWS тоже такого странного выбора нет – см. Supported CPU options for Amazon EC2 instance types.

Или де в комментариях автор статьи (km1337) пишет

Это когда физический CPU распределяется между несколькими виртуальными машинами так, что каждая использует достаточно малую его часть.

Как легко заметить, никакого разделения физических ядер \ CPU по частям нет. Есть очередь исполнения, есть планировщик набивания очереди исполнения. Конечно, при богатой фантазии это можно представить и как «разделение».

Огня в комментариях добавляет и Timeweb_Cloud с их:
У нас не OpenStack, а собственный KVM еще с 2016 года. Все компоненты кастомные и запатентованные.

OpenStack все же оркестратор, а KVM – гипервизор. В переводе на русский, звучит как-то на уровне «у нас управление движением автобусов идет не на автостанции, у нас свой автобус».

Далее надо сказать, что даже для трех серверов можно настроить DRS, Distributed Resource Scheduler, который будет пытаться отбалансировать виртуальный машины так, чтобы нагрузка была сделана более-менее равномерно в пределах кластера. Поскольку у автора статьи за сутки ничего не произошло, то вопрос, который можно было поднять, это именно работа DRS или, возможно, разнородное железо в кластерах облака. Но, ничего этого не сделано.

Модная концовка.

В очередной раз убедиться в том, что есть корреляция "компания дно" и "компания ведет дноблог на хабре" - бесценно.

Показать полностью
1887

Будни сисадминства, или как я дважды чуть не переустановил ОС

Есть у меня на облуживании одна конторка, которая занимается расчётом коммунальных платежей. И у этой конторки есть старенький, но вполне себе живой сервер. На нём уютно живут БД с этими платежами и 1С. Всё это комфортно существовало многие лета, пока эта самая конторка не решила перейти с 1С 7.7 на 8. Понятно, что ресурсов сервера хватать перестало, и было принято решение под ОС и 1С выделить ssd, а также нарастить память. Сказано - сделано: были куплены два неплохих интела, один положил на полочку, на второй перенёс ОС и 1С. коммунальную БД оставил на RAIDе. Туда же, на зеркало, наладил и архивацию 1С. Всё заработало, завертелось, все остались довольны. Но. На второй ssd к моменту старта обновленного сервера склонировать первый я не успел. Официально. А по факту было уже лень и неохота. И я его положил на полочку, обещая себе, что в ближайшие, ага, выходные сделаю.

Разумеется, ближайшие выходные никак не наступали, и я благополучно про всё это забыл. И тут где-то год назад, как раз после НГ каникул, звонит тамошняя бух и говорит, что сервер, того, не включается. Я, почувствовав, как у меня по стулу потёк адреналин, уверил её, что уже еду чинить, а сам, проклиная себя, лень и почему-то тот, второй, диск, побежал к машине...

Приезжаю - да: ОС грузится до какого-то момента, потом пишет про попытку восстановления, потом про его невозможность, а потом воображение рисует на экране задницу. Тут надо сказать, что человек я приходящий, ОС ставил давным-давно (на новый ssd я операционку Акронисом перенёс), дистрибутивы и драйверы попробуй, найди - короче, засада. Ладно. Полез в биос посмотреть порядок загрузки - всё верно, первым стоит Интел. Что ж, думаю, раз ОС слетела - значит, безопаснее будет устанавливать её на новый ssd, который есть у меня. Вдруг старый износился, что и привело к остановке. Заменил диск, воткнул флешку с найденным дистрибутивом, перезагружаю, захожу в меню загрузки, и тут меня осеняет: первым в списке - да, интел. Но интел какой-то не такой, а просто Intel0. И тут меня снова осеняет: это ж, сцк, не мой ssd, а интеловский RAID, с которого сервак и пытается грузиться. Блин. Возвращаю старый ssd назад, настраиваю меню загрузки - всё стартануло, как ракета "Союз". И только потом до меня дошло: батарейка подсела, меню загрузки сбилось, первым встал RAID, на котором когда-то и стояла ОС - вот она-то и пыталась загрузиться.

Фух... Сделал немедленно копию ssd, положил в сейф и написал для себя будущего что и как было. Дело сделано, выслушал адресованные мне фанфары (никто ж не знал, что я тупил полчаса и чуть было не переустановил ОС заново) и уехал восвояси...

Это, значит, было год назад. А тут недавно сижу, никого не трогаю - бац! - звонок. И из трубки на меня накатывают воспоминания годичной давности: сервер не стартанул. Ааа - думаю - снова батарейка и сбившееся меню. Как же, помню... Приехал, смотрю - реально, меню сбилось. Настраиваю всё как было и - хоба! - на полсекунды мелькает BSOD и бесконечный рестарт. Я немедленно загрустил. Подоткнул в приступе горячности новый, ранее склонированный ssd - ситуация не изменилась. Код ошибки говорит, что проблема с оборудованием. Память? Погонял-потестил - всё ок. Да и память с ECC, не должна по идее валить сервер в синий экран... Повыдёргивал всякие контроллеры, сидиромы, токены, оставил только клавиатуру - всё тщетно. Вот тут я реально закручинился. Да что там - очканул! Ведь ладно бы просто ОС переустановить - так я причины не знаю... И тут при очередной загрузке с диагностической флешки я, выбирая из бут-меню устройство загрузки, внезапно обнаруживаю, что в этом меню видны диски, входящие в RAID, но не сам массив. Врываюсь с ноги в биос - точно! SATA mode переключился из режима RAID в AHCI. Аккуратно переключаю назад - сервер стартует так как надо. Фууух... Потом дошло: ОС, не имея драйверов на SATA в режиме AHCI, писала мне через код ошибки, что новое оборудование нашла, но не узнала.

Так, думаю, теперь, наверное, точно пора заменить батарейку) Заменил, собрал всё в кучу, снова выслушал фанфары с дифирамбами и отправился восвояси. Шел и думал: "Капец, блин, я ведь мог на ровном месте дважды ОС переустановить, так и не узнав, почему". Но, слава богу, обошлось. Такие дела.

Показать полностью
Отличная работа, все прочитано!