green_fr: (Default)
[personal profile] green_fr
На работе надумали обзавестись серьёзным production для проекта, написанного на MatLab.

Как говорят на anekdot.ru, преамбула. Мы когда-то давно говорили с MathWorks по несколько иному поводу — у нас были сомнения в производительности системы, они предложили аудит нашего кода, мы с удовольствием согласились. Ребята втроём копали код несколько дней, сгенерировали кучу слайдов для презентации, которая сводилась к двум пунктам:
1. Ваш код написан идеально, не к чему придраться!
2. Мы можем вам продать сервер за какие-то шестизначные суммы в год, летать будет всё.

Первый пункт лично мне понравился, но оставались какие-то сомнения в его искренности. Через некоторое время у меня дошли руки просмотреть profile проекта, перечитать код модуля, который жрал 90% общего времени (в качестве отмазки себя и своих коллег скажу, что он таки был написан IT-консультантом, настоящим профессионалом своего дела, за какие-то космические деньги в час), выкинул оттуда все лишние строчки (только то, что считается по два раза, и то, что считается впустую — никакой алгоритмической оптимизации), и код стал работать вчетверо быстрее.

После чего сомнения появились и во второй строчке презентации MathWorks (дети! никогда не обманывайте! особенно там, где вас можно легко поймать...) — так ли нам нужен их сервер, если мы можем скопилировать проект и распихать его по уже имеющимся серверам в виде простых exe-шников?


Перехожу ко вчерашней истории. Погоняли мы проект на Windows-машине, хоть на физической, хоть на виртуальной. По этому поводу удивительное дело — у нас IT-дирекция перешла недавно на какую-то более свежую версию виртуализации, и вместо x4 к времени рассчётов, как было раньше, виртуализация даёт всего +10%. Очень хорошо, но мы решили проверить и виртуальные Unix-машины. И тут начался эпос.

1. Компилятор MatLab компилирует только под ту платформу, где он сам находится. При том, что для скомпилированного кода ставится «Matlab runtime environment» на гигабайт, то есть я ожидал компиляции по типу java — в некоторый псевдо-код, единый для всех платформ. Но нет. Я несколько раз переспрашивал, прежде чем поверил. В счастью, «платформа» — это одна из трёх групп: Windows, Mac, Unix.

2. У нас нет клиентских Unix-машин. В смысле простого доступа к ним (я не могу ни «подключиться к экрану», ни зайти по telnet — это отдельная сетка, мне туда входа нет. Договорились, что я подъеду в Orléans, где сидят наши администраторы. По этому поводу — карикатурная ситуация с бородатыми админами в майках и с пивом осталась, только мальчики успели подрасти и поседеть/полысеть, но атмосфера всё та же.

3. У нас нет никакого графического интерфейса на Unix. По этому поводу MathWorks выдал прекрасный термин (наверное, распространённый, я просто давно не общался на эти темы): headless installation. Да, MatLab можно поставить без GUI, только с командной строкой.

4. Стандартный вариант установки: скачиваем «маленький» инсталлятор (120 MB), вводим все идентификаторы, и он скачивает всё необходимое для установки именно того, что ты купил. Очевидно, что этот инсталлятор графический, для нас не подходит. Ок, говорят MathWorks (в какой-то момент они меня начали по голосу узнавать, я им звонил раз 10 вчера), вы можете скачать два iso-образа со всеми продуктами, в момент инсталляции поставится то, что вам нужно. По этому поводу я не премину потоптаться по компетентности наших коллег из MathWorks. Говорят дословно: скачайте iso-образы и разархивируйте их в одну папку. Что значит, «разарзивируйте», в некотором ошалении спрашиваю я? Да, говорят, это то же самое, что zip, он просто называется iso :-)

5. Скачали образы, 11 GB. Сидящий рядом со мной администратор Unix’а начинает нервничать, потому что у него на машине свободного места не так много, и он не собирался сегодня пересматривать всю свою файловую систему. Начали ставить, места предсказуемо не хватает. Попытался стереть откровенно ненужные файлы (всё, что начинается с Simulink — это другой продукт MathWorks, мы его не покупали), но установщику зачем-то нужны все эти файлы. Я вспомнил молодость, жонглирование файлами на дискетах без жёского диска — красиво, но нет, тоже не получилось. С матюками админ полез добавлять ещё одну файловую систему.

6. Ещё одно погружение в детство — для установки нужно отредактировать файл параметров. Очевидно запускаем vi — и руки мои всё ещё помнят, как в нём работать! В этот момент я, по-моему, сильно вырос в глазах всех администраторов. До этого я был для них очередным «представителем клиента», человеком, который должен путать слова «монитор» и «компьютер».

7. Аутентификация MatLab’а проходит через так называемый license server. У нас было много вопросов по этому поводу: моя лицензия привязана к моему Windows-account, как объяснить серверу, что я из-под Unix — это тот же самый я? Попытались вообразить разные варианты аутентификации, потом всё-таки позвонили MathWorks — спокойно, говорят. Мы проверяем только имя пользователя. Чисто как строку. Хозяйке на заметку: для того, чтобы использовать зарегистрированный на кого-то другого MatLab, достаточно создать локальную учётную запись с тем же именем.

8. С горем пополам поставили, скомпилировали, запустили — не работает. Но это уже понятно: у нас весь код с анти-слэшами, а для Unix’а слэши нужны прямые. MatLab даже предлагает мега-функцию filesep, которая возвращает «\» или «/» в зависимости от платформы. На этом мы с админами расстались, договорившись, что я сегодня перепишу всё через эту функцию.

9. Приехав сегодня на работу, я увидел, что мы используем ещё и system для запуска команд DOS (тоже всё работа с файлами) — понятно, что можно написать везде if и продублировать на Unix, но как мы всё это будем тестрировать без доступа к машинам? Плюс, у нас есть работа с Excel — опять же, MathWorks божится, что все его функции используют MS Office API только для скорости, а если Офиса нет — то они и своими средствами обходятся, но как-то даже и пробовать расхотелось. Спасибо за творчески проведённый день, но мы пока что останемся на той же платформе.
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

green_fr: (Default)
green_fr

June 2025

S M T W T F S
123 4 567
89 1011121314
15161718192021
22232425262728
2930     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 10th, 2025 09:32 am
Powered by Dreamwidth Studios