?

Log in

Дважды мудак [entries|archive|friends|userinfo]
Декларативное рулит

Site Meter

[ website | Мой сайт ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Тонкое провизионирование-2 [дек. 9, 2016|23:00 pm]
Andy Melnikov
[Tags|, , ]

Я тут себе чуть не выстрелил в ногу. В-общем, напугали меня, что винда не обнуляет пустые блоки, и надо запустить sdelete -z, дабы их обнулить. И на самом деле у меня не 150 гб, а всего 75, что уже похоже на правду. Из этих 75 гиг у нас 35 занимает текстовый файлик. Ну и я его бекапил перед модификацией, вот несколько этих бекапов после удаления не освободили место с физического носителя. В-общем, я мерил в ходе запуска этой sdelete, а она не хитрит через defragmentation API, как можно было бы подумать, а просто создает на пустом месте свой файлик. Ну и файлик отъел 75 гиг, и у меня в прошлом посте закралась ошибка.

Короче, в результате 2 виртуалки по 75 гиг не влезают в 450.

Теперь внимание!

В суперэнтерпрайзной vSphere (я не говорю про мой фришный обрубок от неё) нет возможности деаллоцировать единожды аллоцированное место. Не то что не деаллоцируется автоматически, вообще можно, только остановив VM и запустив утилиту в шелле. Вашу ж мать.

Т.е. если скажем у меня хостинг, и я всем раздаю 100 гигов диска, то какой-то долбоеб, у которого внезапно из-за бага нарисовался 90-гиговый лог, после удаления лога так и будет эти 90 гиг у меня потреблять. Ну и получается, что это не thin provisioning, а какой-то пшик, детсадовство. Хорошо хоть, что оно больше полной емкости не начинает потреблять.
СсылкаОставить комментарий

Тонкое провизионирование [дек. 9, 2016|21:37 pm]
Andy Melnikov
[Tags|, , ]

1) У нас была туча серверов прошлых c купленными за относительно безумные деньги 500-гиговыми SATA-винтами, из которых реально использовалось 30. В результате за годы они посыпались, так и не оказавшись востребованными. Тогда (по-крайней мере так заявляют сейчас устно) за этим никто не следил и купили какие-то дефолтовые.

2) Недавно купленный сервер (тот самый единственный) приехал с каким-то сумасшедшим количеством SAS-дисков по 450 гб. То ли 4, то ли 6. A caballo dado no se le ve el colmillo. Но тем не менее решил сделать по минимуму 2 диска в RAID1 а остальные подумать куда пристроить. На худой конец в резерв.

3) На этом рейде поставил thinly provisioned disk типа с 400 гигами. 50 типа на всякую ерунду вроле самого ESXi, инсталляционных .iso-образов и снапшотов. Ну и теперь решил поставить туда вторую виртуалку, и она сказала "хуй". Просто отпала в ходе копирования на неё файлов. ESXi клиент говорит, что типа закончилось место и он остановил виртуалку. А я не понимаю, как оно может закончиться, если на первой виртуалке используется 150, 10 в исошках и 9 снапшот.

В-общем, выяснилось, что

а) 150-километровый диск занимает 200 км
б) На каждую виртуалку выделяется дополнительный своп размером, равным максимальному ОЗУ

В-общем, 200 + 128 + 20 = 350 км. И две одинаковых виртуалки по 150 км на 400-гиговый диск не влезают в результате.

А урок из этого такой:

- Не заниматься безумным RAM overprovisioning. У нас там из 128 гигов 18 реально используются. Сделать 32.
- Вынести эти vswap на отдельный носитель. А лучше и родные виндосвопы заодно.
- Любителям отключать свопы, равно как и любителям создавать 128-гиговые свопы без thin provisioning, посылаю дежурные лучи поноса.
- особые лучи стимулирующего анального зондирования посылаю в Microsoft, VMware и лично Линусу, дабы прочитали наконец спецификацию SCSI и запилили нативный тонкий провижонинг вместо этих говнофайликов, из которых дырки не самоубираются по SCSI UNMAP.
СсылкаОставить комментарий

Баги в ESXi [дек. 9, 2016|19:52 pm]
Andy Melnikov
[Tags|, , ]

Этот энтерпрайз на деле то же говно, только со своим неповторимым послевкусием. Напомнило мне времена IBM ClearCase. Тут ещё знакомый образовался, работает эникейщиком в британском кобол-шопе. В феврале приедет развиртуализовываться.

Короче, дефолты в ESXi сделаны таким образом, чтобы после прокликивания визардов всё работало. Но потом приходится делать двойную работу.

Короче, при создании VM:

- создавайте её через веб уй (https://ESXI_IP/ui/)
- выбирайте самую последнюю версию виртуальной хардвари
- выбирайте thin provisioning для дисков
- выбирайте Paravirtualized SCSI в качестве контроллера
- выбирайте VMXNet 3 в качестве сетевухи

Теперь внимание финт ушами и ход конём. Чтобы это сработало - вам нужен ещё и лигаси-клиент ака VMware vSphere Client. Первые шаги нельзя сделать через клиента, а следующий - через веб.

- В лигаси-клиенте добавляете флоп с использованием имиджа из датастора. В отличие от веб-клиента, лигаси-клиент показывает кроме нормальных датасторов ещё и фиктивный, в котором есть флоппи-имидж бут-драйвера для Paravirtualized SCSI for Windows 2008 (годится для всех последующих версий).
- бутитесь, используя одну из многочисленных консолей - веб, vmrc или лигаси. Мне лигаси нравится больше - она позволяет делать отдельно мягкие и жесткие перезагрузки. Блин почему они не сделали вообще отдельный экзешник консоли, не прилепленный ни к веб-уям (как vmrc или веб), ни к лигаси-клиенту (как лигаси-консоль)

Собсно без флопа винда не увидит дисков. Поставили винду - можно похерить dvd и флоповод. Но не стоит - сначала надо проинсталлить Vmware tools (появляется диск в сидюке, с него запускаете сетап). Теперь херите.

На случай, если вы поставили сдуру диск по дефолту на LSI SAS, чтобы переставить на paravirtualized после перестановки винды надо сделать финт ушами, достаточно безумный. Не, монтирование флопа не годится поскольку непонятно, как с него дрова ставить. И процедура даже описана у вмвари в VMKB.

Вместо этого берете лигаси-клиент (я брал лигаси, но может можно и в вебе) и добавляете в него фиктивный диск размером 1 гб. У этого диска надо выбрать scsi id =2:0, после чего добавляется ещё и фиктивный контроллер. Просто так фиктивный контроллер добавить нельзя.

У этого фиктивного контроллера переставляете тип на paravirtualized и грузитесь в винду. В диспетчере устройств убеждаетесь, что есть два разных контроллера (и два одинаковых диска - не перепутайте сдуру диски и контроллеры).

Далее вмварщики говорят перегрузиться в сейф-моде (который ставится через msconfig), но я тупо переставил насильно драйвер в диспетчере устройств с LSI на Vmware Paravirtualized SCSI, после чего отказался от перезагрузки, погасил машину, убил 1гб-диск (благо можно убить сразу и образ с диска, а не просто отдетачить), поменял у основного диска тип на paravirtualized и хуяк всё загрузилось.

Ну и в винде есть волшебная команда sconfig, которая позволяет, два раза не вставая, поменять айпишник и имя, проверить обновления, включить-выключить удаленный десктоп и администрирование и создать невстроенных админов. Правда, юзеров потом все равно отдельно надо создавать, что проще всего через говноклиент администрирования. Там tasks - computer management (очевидно бля!). Ну и далее в mmc как дурак.

А баг заключается в том, что веб-клиент не позволяет добавить флоппи-имидж из виртуального датастора ака файловой системы esxi-хоста.
Ссылка2 комментария|Оставить комментарий

Мифы сишной кодогенерации [дек. 7, 2016|14:57 pm]
Andy Melnikov
[Tags|, ]

Спасибо товарищу Ганди за наше счастливое детство! Теперь есть тулза https://godbolt.org/, дабы смотреть на асм, генерируемый gcc и icc, притом почти без говна!

Сверху 4 кнопки, надо включить последние три (ну или две, если вам не нравится DWORD PTR а нравятся процентики).

В-общем ниже сурс, пастим его туда и подтверждаем (пусть и на искусственных примерах):

- Наивная кодогенерация генерит наивный но достаточно вменяемый код
- При коммандлайне -O2 всё инлайнится и генерится достаточно хороший асм (но по уёбищным по меркам 80386)
- При коммандлайне -O3 -march=native получается вырвиглазный векторизированный код (и по-моему он же с loop unroll).
// Type your code here, or load an example.
int square(int num) {
    return num * num;
}

int sqq(int num) {
  return square(square(num));
}

void sqa(int *in, int *out)
{
  for (unsigned i = 0; i < 128; i++)
  {
    out[i] = sqq(in[i]);
  }
}
Вопрос - можно ли заставить gcc/icc генерить менее вырвиглазную векторизацию? Ну и вообще если расслабить требования и потребовать возвести 128 чисел в 4-ю степень, не важно каких чисел и как они лежат, какой будет исходник на сях?

(там есть троллфейс-вариант возведения 1-битовых чисел, который id/nop, но может оказаться например что 16-битные unsigned, лежащие в каком-нибудь спецмассиве из sse-четвёрок, проще)

Upd: нестандартный __restrict помогает
Ссылка9 комментариев|Оставить комментарий

Готовы к продакшену [дек. 6, 2016|22:28 pm]
Andy Melnikov
[Tags|]

По совету друзей™ водружаю CentOS 6.8 на десяточный Hyper-V.

С ходу разрешение "текстовой" консоли (hyperv_fb.ko как я понимаю) хуячится в 100500х100500 и на моем говноноуте 1366х768 получается скроллинг. При том, что там в принципе 80х25 хватает, классический шапошный красно-синий курсес-сетап.

Далее, есть два имиджа вменяемого размера - minimal и netsetup. Нетсетап в понимании шапки означает, что к исошке вытягивается монолитный install.img, причем размер netsetup + install.img > minimal. Короче netinstall это такая шутка.

Более того, загрузка install.img на моем соединении падает после 2-4%, просто прогресс бар встает и всё. Ни отменит не перезапустить. Хез почему.

Тяну сейчас minimal iso. Причём из мазохистских соображений с того же миррора, чтобы исключить какой-нибудь невменяемый троттлинг именно там. Всё тянется.
СсылкаОставить комментарий

navigation
[ viewing | most recent entries ]
[ go | earlier ]