Почти у каждой компании сейчас обязательно есть отдел или группа работающая в CAD/CAM
или тяжелых дизайнерских программах. Эту группу пользователей объединяет серьёзные требования к железу: много памяти — 64ГБ и больше, профессиональная видеокарта, быстрый ssd, и чтобы было надежное. Зачастую компании покупают некоторым пользователям таких отделов несколько мощных ПК (или графических станций) и остальным менее мощные в зависимости от потребностей, а также финансовых возможностей компании. Зачастую это стандартный подход для решения таких задач, и он нормально работает. Но во время пандемии и удаленной работы, да и в общем — такой подход неоптимален, очень избыточен и крайне неудобен в администрировании, управлении и прочих аспектах. Почему это так, и какое решение идеально удовлетворит потребности в графических станциях многих компаний? Прошу пожаловать под кат, где описано как собрать рабочее и недорогое решение, чтобы
В декабре прошлого года одна компания открывала новый офис для небольшого КБ и была поставлена задача организовать им всю компьютерную инфраструктуру учитывая, что ноутбуки для пользователей и пару серверов у компании уже есть. Ноутам уже было пару лет и это были в основном игровые конфигурации с 8-16ГБ ОЗУ, и в основном не справлялись с нагрузкой от CAD/CAM приложений. Пользователи должны быть мобильными, так как часто необходимо работать не из офиса. В офисе к каждому ноуту дополнительно покупается еще по монитору (так работают с графикой). При таких входных данных — единственно оптимальное, но рискованное для меня решение — внедрить мощный терминальный сервер с мощной профессиональной видеокартой и nvme ssd диском.
Преимущества графического терминального сервера и работы по RDP
- На отдельных мощных ПК или графических станциях большую часть времени аппаратные ресурсы не используются даже на треть и простаивают без дела и только короткий период времени используются в 35-100% своей мощности. В основном КПД составляет 5-20 процентов.
- Но часто аппаратная часть далеко не самая затратная составляющая, ведь базовые графические или САД/CAM лицензии на ПО часто стоят от 5000$, а если еще с расширенными опциями то и от 10 000$. Обыкновенно в сеансе RDP эти программы запускаются без проблем, но иногда необходимо дозаказывать RDP опцию, либо поискать по форумам что прописать в конфигах или реестре и как запустить в сеансе RDP такое ПО. Но проверить, что нужное нам ПО работает по RDP нужно в самом начале и сделать это просто: пробуем зайти по RDP — если программа запустилась и работают все базовые программные функции, то и проблем с лицензиями скорее всего не будет. А если выдает ошибку, то перед реализацией проекта с графическим терминальным сервером, ищем удовлетворительное для нас решение проблемы.
- Также большим плюсом есть поддержка одинаковой конфигурации и специфических настроек, компонентов и шаблонов, что часто труднореализуемо для всех ПК пользователей. Управление, администрирование и обновление ПО тоже «без сучка и задоринки»
В общем плюсов много — посмотрим как на деле покажет наше почти идеальное решение.
Собираем сервер на базе бу CISCO UCS-C220 M3 v2
Изначально планировалось купить поновее и мощный сервер с 256ГБ DDR3 ecc памятью и 10GB ethernet, но сказали что нужно немного сэкономить и вписаться в бюджет на терминальный сервер 1600$. Ну ладно — клиент всегда
бу CISCO UCS-C220 M3 v2 (2 X SIX CORE 2.10GHZ E5-2620 v2) \128ГБ DDR3 ecc — 625$
3.5" 3TB sas 7200 з США ід — 2x65$=130$
SSD M.2 2280 970 PRO, PCI-E 3.0 (x4) 512GB Samsung — 200$
Видеокарта QUADRO P2200 5120MB — 470$
Адаптер Ewell PCI-E 3.0 to M.2 SSD (EW239) -10$
Итого за сервер = 1435$
Планировалось брать ssd 1TB и 10GB ethernet adapter — 40$, но выяснилось, что UPS к их 2 серверам не было, и пришлось немного ужаться и купить UPS PowerWalker VI 2200 RLE -350$.
Почему сервер, а не мощный ПК? Обоснование выбранной конфигурации.
Многие недальновидные админы (много раз уже сталкивался) — почему то покупают мощный (зачастую игровой ПК), ставят там 2-4 диска, создают RAID 1, гордо называют это сервером и ставят его в углу офиса. Естественна вся комлектуха — «сборная солянка» сомнительного качества. Поэтому распишу подробно почему подобрана под такой бюджет именно такая конфигурация.
- Надежность!!! — все серверные комплектующие спроектированы и протестированы для работы более 5-10 лет. А игровые мамки от силы работают 3-5 лет и даже процент поломки во время гарантийного срока у некоторых превышает 5%. А наш сервер от супернадежного бренда CISCO, так что особых проблем не предвидится и их вероятность на порядок ниже стационарного ПК
- Важные компоненты типа блока питания дублируются и в идеале можно подать питание с двух разных линий и при выходе из строя одного блока сервер продолжает работать
- Память ECC — сейчас мало кто помнит, что изначально память ECC была введена для коррекции одного бита от ошибки, возникающей в основном от воздействия космических лучей, а на объёме памяти 128ГБ — ошибка может возникать несколько раз в году. На стационарном ПК мы можем наблюдать вылет программы, зависание и прочее, что некритично, но на сервере цена ошибки иногда очень высока (например неправильная запись в БД), в нашем случае при серьезном глюке надо перегрузится и иногда это стоит дневной работы нескольких человек
- Масштабируемость — часто потребность компании в ресурсах вырастает в несколько раз за пару лет и в сервер легко добавить памяти дисков, поменять процессоры (в нашем случае шестиядерные E5-2620 на десятиядерные Xeon E5 2690 v2) — на обычном ПК почти никакой масштабируемости
- Серверный формат U1 — серверы должны стоять в серверных! и в компактных стойках, а не кочегарить(до 1КВт тепла) и шуметь в углу офиса! Как раз в новом офисе компании отдельно предоставлялось немного (3-6 юнитов) место в серверной и один юнит на наш сервер как раз был нам впритык.
- Удаленные: управление и консоль — без этого нормальное обслуживание сервера для удаленной! работы крайне затруднительно!
- 128Гб ОЗУ — в ТЗ было сказано 8-10 пользователей, но в реальности будет 5-6 одновременных сессий — поэтому учитывая типичный в той компании максимальный расход объёма памяти 2 пользователя по 30-40ГБ=70ГБ и 4 юзера по 3-15ГБ=36ГБ, + до 10ГБ на операционку в сумме 116ГБ и 10% у нас в запасе(это все в редких случаях максимального использования. Но если будет не хватать то в любой момент можно добавить до 256ГБ
- Видеокарта QUADRO P2200 5120MB — в среднем на пользователя в той компании в
удаленном сеансе расход видеопамяти был от 0,3ГБ до 1,5ГБ, так что 5ГБ — будет достаточно. Исходные данные были взяти с аналогичного, но менее мощного решения, на базе i5/64ГБ/Quadro P620 2ГБ, которого хватало на 3-4 пользователя - SSD M.2 2280 970 PRO, PCI-E 3.0 (x4) 512GB Samsung — для одновременной работы
8-10 пользователей, необходимо именно скорости NVMe и надежность ssd Samsung. По функционалу этот диск будет использоваться для ОС и приложений - 2х3TB sas — объединяем в RAID 1 используем для объёмных или редкоиспользуемых локальных данных пользователей, а также для бекапа системы и критическо важных локальных данных с диска nvme
Конфигурация одобрена и куплена, и вот скоро настанет момент истины!
Сборка, настройка, установка и решение проблем.
С самого начала у меня не было уверенности, что это 100% рабочее решение, так как на любом этапе, начиная со сборки заканчивая установкой, запуском и корректной работой приложений можно было застрять без возможности продолжить, поэтому про сервер я договорился, что его в течении пару дней можно будет вернуть, а другие компоненты можно использовать в альтернативном решении.
1 надуманная проблема — видеокарта профессиональная, полноформатная! +пару мм, а что если не влезит? 75вт — а что если pci разьем не потянет? И как нормальный теплоотвод этих 75вт сделать? Но влезла, запустилась, теплоотвод нормальный(особенно если кулеры сервера включить на обороты выше среднего. Правда когда ставил, для уверенности что бы ничего не замыкало что-то в сервере на 1мм отогнул (уже не помню что), а для лучшего теплоотвода с крышки сервера потом после окончательной настройки отодрал пленку инструкции, которая была на всю крышку и которая могла ухудшать теплоотвод через крышку.
2-е иcпытание — NVMe диск через переходник мог не увидится либо система туда не поставится, а если поставится, то не загрузится. Как ни странно Windows поставилась на NVMe диск, но загрузится с него не смогла, что логично так как биос(даже обновленный) ни в какую распознавать для загрузки NVMe не хотел. Не хотел костылить, но пришлось — тут пришел на помощь наш любимый хабр и пост про загрузку с nvme диска на legacy системах скачал утилитку Boot Disk Utility (BDUtility.exe), создал флешку с CloverBootManager по инструкции из поста, установил флешку в биосе первой на загрузку и вот мы уже грузим загрузчик с флешки, Clover успешно увидел наш NVMe диск и через пару секунд автоматично с него загрузился! Можно было поиграться с установкой clover на наш raid 3TB диск, но было уже субота вечер, а работы оставалось еще на день, ведь до понедельника нужно было или отдавать сервер или оставлять. Загрузочную флешку оставил внутри сервера, там как раз был лишний usb.
3-я почти угроза провала. Поставил Windows 2019 standart +RD сервисы, установил главное приложение, ради которого всё затевалось, и всё чудесно работает и буквально летает.
Замечательно! Еду домой и подключаюсь по RDP, приложение запускается, но ощущается серьёзный лаг, смотрю а в проге сообщение «включен soft режим». Чего?! Ищу более свежие и суперпрофессиональные дрова на видеокарту, ставлю -результата ноль, более древние дрова под p1000 тоже ничего. А в это время внутренний голос всё издевается «а я тебе говорил — не экспериментируй со свежачком — возьми p1000». А время — уже давно ночь во дворе, с тяжелым сердцем ложусь спать. Воскресенье, еду в офис — ставлю в сервер quadro P620 и тоже по RDP не работает — MS в чем дело? Ищу по форумам «2019 server и RDP» — ответ нашел почти сразу.
Оказывается, что так как у большинства сейчас мониторы с большим разрешением, а в большинстве серверов встроенный графический адаптер эти разрешения не поддерживает — то аппаратное ускорение по умолчанию отключено через групповые политики. Цитирую инструкцию по включению:
- Open the Edit Group Policy tool from Control Panel or use the Windows Search dialog (Windows Key + R, then type in gpedit.msc)
- Browse to: Local Computer Policy\Computer Configuration\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Remote Session Environment
- Then enable “Use the hardware default graphics adapter for all Remote Desktop Services sessions”
Перезагружаемся — все прекрасно по RDP работает. Меняем видеокарту на P2200 опять работает! Теперь когда мы уверены, что решение полностью рабочее приводим все настройки сервера к идеалу, вводим в домен, настраиваем доступ пользователей и прочее, ставим сервер в серверную. Тестируем всей командой пару дней — всё идеально работает, на все задачи ресурсов сервера хватает с избытком, минимальный лаг возникающий в результате работы по RDP всем пользователям незаметен. Замечательно — задача выполнена на 100%.
Пару моментов, от которых зависит успешность внедрения графического сервера
Так как на любом этапе внедрения графического сервера в организацию могут возникнуть подводные камни, которые могут создать ситуацию аналогичную как на картинке со сбежавшими рыбками
то на этапе планирования необходимо сделать несколько простых шагов:
- Целевая аудитория и задачи — пользователи которые интенсивно работают с графикой и им нужно аппаратное ускорение видеокарты. Успех нашего решения основан на том, что потребности в мощности пользователей графических и CAD/CAM программ был удовлетворен с избытком более 10 лет назад, а на данный момент мы имеем запас мощности превышающий потребности в 10 и более раз. Например, мощности GPU Quadro P2200 хватает с избытком на 10 пользователей, и даже при недостатке памяти видеопамяти видеокарта добирает с ОЗУ, и для обычного 3d разработчика такое небольшое падение в скорости памяти проходит незаметно. Но если в задачах пользователей есть интенсивные вычислительные задачи (рендеринг, расчеты и прочее), которые часто задействуют 100% ресурсов — то наше решение не подходит, так как другие пользователи в эти периоды не смогут нормально работать. Поэтому тщательно анализируем задачи пользователей и текущую загрузку ресурсов (хотя бы приблизительно). Также обращаем внимание на объем перезаписи на диск в день и если он составляет большой объём, то подбираем под этот объём уже серверные ssd или optane диски.
- Исходя из количества пользователей подбираем подходящий по ресурсам сервер, видеокарту и диски:
- процессоры по формуле 1 ядро на пользователя + 2,3 на ОС, все равно каждый в один момент времени не использует одного или максимум двух(при редкой загрузке модели) ядер;
- видеокарта -смотрим средний объём потребления видеопамяти и GPU на пользователя в сеансе RDP и подбираем профессиональную! видеокарту;
- аналогично поступаем с ОЗУ и дисковой подсистемой(сейчас можно даже RAID nvme недорого подобрать).
- Тщательно смотрим по документации к серверу (благо все брендовые сервера имеет полную документацию) соответствие по разъёмам, скоростям, питанию и поддерживаемым технологиям, а также физическим размерам, и нормам теплоотвода устанавливаемых дополнительных компонентов.
- Проверяем нормальную работу нашего ПО в нескольких сессиях по RDP, а также на отсутствие лицензионных ограничений и тщательно проверяем наличие необходимых лицензий. Решаем этот вопрос до первых шагов по реализации внедрения. Как было сказано в комментарии уважаемым malefix
"— Лицензии могут быть привязаны к кол-ву пользователей — тогда вы нарушаете лицензию.
— Софт может некорректно работать при нескольких запущенных инстансах — стоит ему хоть в одном месте писать мусор или настройки не в пользовательский профиль/%temp%, а в что-то общеедоступное — вам потом будет очень весело отлавливать проблему" - Продумываем где будет установлен графический сервер, не забываем про UPS и наличие там высокоскоростных ethernet портов и интернет (если нужно), а также соответствие климатических требованиям сервера.
- Срок внедрения увеличиваем минимум до 2,5-3 недель, ведь многие даже мелкие необходимые компоненты могут ехать до двух недель, а ведь сборка и настройка проходит несколько дней — только обычная загрузка сервера до ОС может быть более 5 минут.
- Обговариваем с руководством и поставщиками, что если вдруг на каком либо этапе проект не пойдет или пойдет не так, то можно сделать возврат или замену.
- Также было любезно подсказано в комментарии malefix
после всех экспериментов с настройками — всё снести и поставить с нуля. Вот так:
— во время экспериментов надо документировать все критичные настройки
— во время установки с нуля вы повторно выполняете минимально необходимые настройки (которые задокументировали на предыдущем этапе)
- Операционную систему (желательно Windows server 2019 — там качественный RDP) устанавливаем вначале в Trial режиме, но ни в коем случае не evaluate (нужно потом переустанавливать с нуля). И только после успешного запуска решаем вопросы с лицензиями и активируем ОС.
- Также до внедрения подбираем инициативную группу для проверки работы и объясняем будущим пользователям преимущества работы с графическим сервером. Если это делать после, то увеличиваем риск рекламаций, саботажа и неаргументированных негативных отзывов.
По ощущениям работа по RDP не отличается от работы в локальном сеансе. Часто даже забываешь, что работаешь где-то по RDP — ведь даже видео и иногда видеосвязь в сеансе RDP работают без ощутимых задержек, ведь сейчас у большинства подключен высокоскоростной интернет. По скорости и функционалу RDP компания Microsoft сейчас продолжает приятно удивлять и аппаратное ускорение 3D и мультимониторы — все что необходимо для удаленной работы пользователям графических, 3D и CAD/CAM программ!
Так что во многих случаях установка графического сервера согласно проведенного внедрения является предпочтительней и мобильней 10 графических станций или ПК.
P.S. Как просто и безопасно подключиться через интернет по RDP, а также оптимальные настройки для RDP клиентов — вы можете подсмотреть в статье "Удаленная работа в офисе. RDP, Port Knocking, Mikrotik: просто и безопасно"
Crazyvlad
Несколько вопросов:
Делать бэкап на локальные диски? Месье ищет приключений на свою пятую точку.
Тратить место на NVMe на ОС которая загружается 1 раз в полгода (да обьем небольшой, но зачем)?
512Gb на SSD для рабочих файлов CAD — это может быть маловато, но нужно смотреть конечно по факту.
Как я понимаю, своп ОС на том же SSD где и рабочие файлы или своп отключен?
P.S. и конечно сам NVMe дектопный — при росте нагрузке он будет сильно «тормозить», и хотя ресурс его 600TBW — нужно его мониторить — так как на сложных проектах и работе нескольких человек, можно легко иметь пару терабайтов перезаписи в день.
anonymous
Хм. Я конечно ещё не мучал 2019, но 2016 мне преподнёс большую каку, когда я пробрасывал в гиперв, похожий видео адаптер, для работы с разным графическим по. Всё было сднлано5, рдп настроено, я довольный лёг спать… Утром звонок, а че рдп не работает? Я как? Так второй заходит ющер и первый вылетает. Несколько часов гугления и я нахожу, что адаптер в сессию пробрасывается только одну… Убирпешь проброс, пускает много юзеров, включаешь, только одну сессию. И когда поыиксят хер знает поыиксили в 2019?
turone Автор
Но зачем через Hyper-V? Просто 2019 на железо, ведь в VM вы всё равно нормально все ресурсы не прокинете — чем нибудь не пожертвовав. К тому же производительность однозначно может пострадать, то зачем нам виртуализация? Чтобы повесить всё на один ресурс? Мне кажется это немного извращенным, потому как некоторые вещи лучше не виртуализировать, и графический сервер один из таких случаев.
drWhy
А как же VT-d, вроде накладные расходы должны быть околонулевыми (теоретически).
ilkman, вероятно зависит от драйвера видеокарты.
turone Автор
а смысл виртуализации? если прямое назначение железа только для графического терминального сервера? в коменте выше человек столкнулся из-за виртализации с непреодолимой проблемой, так зачем городить огород?
anonymous
Суть не в том, зачем, а в том- что не работают заявленные в MS технологии. И я еще не в курсе, заработали ли они в 2019. Сервер слишком силен, чтобы железкой его отдавать — у всех свои условия работы (мне важно не производительности- у меня курсы для студентов на ней)… Пришлось делать интерпрайзовые 8.1 в которые этот адаптер пролезает как хост машину- никаких RDP. А вот это точно уже излишние ресурсы самого железа