Один из самых компактных в своём классе: 255 × 150 × 150 мм. А ещё с крутым дизайном и подсветкой.
🚀 Работает на базе Intel Core i9-13900H с тактовой частотой до 5,4 ГГц (Turbo Boost). В качестве видеокарты выступает NVIDIA GeForce RTX 4060 на 8 ГБ. Объём двухканальной оперативной памяти DDR5 может составлять до 64 ГБ, а ёмкость SSD-накопителя — до 2 ТБ.
Сегодня компьютером на x86-совместимом процессоре едва ли можно кого-то удивить с гиковской точки зрения. Другое дело - обучающий ноутбук для детей, который работает на интересном и необычном ARM-процессоре от небезызвестной компании VIA. И хотя для запуска произвольных программ его необязательно было хакать - всем гикам известно, надо было ставить Linux!
К чему приводит давняя детская мечта об обучающем ноутбуке, что скрывается внутри устройства за 500 рублей и как на всё это накатить Linux с дуалбутом в родную систему - читайте в сегодняшней подробной статье!
❯ Предисловие
С самых ранних лет своей жизни, я так или иначе интересовался компьютерами. Когда многие мои читатели уже заканчивали университет или жили взрослой жизнью в начале-середине 2000-х годов, ваш покорный слуга всё ещё ходил в детский сад — и уже тогда мечтал о своём собственном личном компьютере.
В те годы, даже в моём провинциальном Ейске уже можно было найти за бесценок списанный с госсектора компьютер на условном 486'ом или даже Pentium MMX. Однако у моих родителей таких знакомств не было, да и друзей с личными ПК — тоже. Даже с популярными в те годы «Денди-ноутбуками» я познакомился лишь пару лет назад, несмотря на то, что аппаратный клон NES стал моей основной игровой платформой детства.
О нём я тоже писал статью. Довольно интересный гаджет, храню его в своей коллекции.
В те времена, зажиточные семьи часто покупали своим детям так называемые детские обучающие компьютеры, которые представляли из себя ничто иное, как «Brick Game» с клавиатурой и несколькими обучающими играми/программами. Примитивность и одновременная гениальность этих устройств зашкаливала: тайваньские инженеры умудрились сделать достаточно многофункциональную машину на простейшем микроконтроллере из 90-х — по типу тех, что использовались в «Тетрисе»: 4-битный процессор на 1МГц, система команд напоминающая 8051 с отдельными инструкциями для управления звукогенератором, встроенный контроллер ЖК-дисплея, 4Кб ROM-памяти и 64 байта оперативной - в общем, это маленькое инженерное чудо не могло не привлекать к себе внимание детей с гиковскими наклонностями!
Но даже такого компьютера у меня в детстве не было, оставалось лишь смотреть и облизываться на экземпляры у соседских друзей... И я думаю многие читатели знают, что такое несбывшиеся детские мечты!
К 2010 году, в Китае и Тайване случился бум мощных и недорогих систем на кристалле. Буквально каждые полгода выходили новые чипы, которые совмещали в одном корпусе практически весь компьютер: от центрального процессора, до 3D-видеоускорителя и всё это буквально за пару долларов. Среди популярных моделей вспоминаются MIPS-чипсеты от Ingenic (использовались в плеерах и игровых консолях Dingoo и Ritmix) и ARM-чипсеты от InfoTMIC, TeleChips, Rockchip (использовались в первых Android-планшетах за 100-150$, которые в те годы назывались MID). Добавьте к этому резкое удешевление NAND-памяти объёмом в 2-4ГБ и оперативной памяти типа SDRAM/DDR1 - очевидно, что предприимчивые китайские компании захотят собрать что-нибудь массовое и при этом недорогое!
Планшет с процессором в слоте DDR2-SODIMM - это самое диковинное, что вы сегодня видели :)
На волне популярности нетбуков, а конкретно — свежего Asus EeePC 700, некий китайский ODM-производитель разработал несколько очень дешевых платформ для ноутбуков, которые между собой были похожи как две капли воды, но отличались процессорами. Больше всего устройств использовало чипы разработки WonderMedia, но также встречались гаджеты на процессорах Anyka и даже Ingenic. И цена таких ноутбуков была просто невероятной: от 50$ до 100$ за штучку. Полноценный ноутбук с RJ-45, Wi-Fi модулем, 2-4ГБ встроенной памяти и лицензионной Windows всего за 2.000 рублей по тому курсу... это было что-то невероятное!
В России такие ноутбуки тоже продавались. В основном их закупали предприимчивые граждане с Таобао/Алика и затем торговали ими в павильоне на рынке или в переходе. Но были также и небольшие официальные поставки, среди которых затесался герой нашей сегодняшней статьи — некий «Бам-Бук», который стоил аж 6.500 рублей в 2010 году (~210$ по тому курсу)!
Будучи фанатом портативных гаджетов на необычных процессорах, я разместил пост о поиске подобных ноутбуков на Хабре, Пикабу и 4pda. И год спустя, Toshan с 4pda предложил мне купить тот самый «Бам-Бук» за символические 500 рублей... а мы ведь помним, что такое несбывшиеся детские мечты!
❯ Что внутри?
Ноутбук приехал в целостности и сохранности, однако Антон сразу предупредил о том, что у устройства не работает часть клавиш на клавиатуре, а также тачпад. После включения «БамБука», меня встретил рабочий стол Windows CE, но системой едва ли можно было пользоваться без клавиатуры.
Поскольку на устройстве уже были видны следы разборки, я решил его перебрать и проверить целостность шлейфов, а также пайки коннекторов. Разбирается нетбук очень просто: достаточно лишь открутить несколько винтов на поддоне, включая потайной под наклейкой EasyPC и отключить шлейф клавиатуры с тачпадом со стороны топкейса.
В процессе снятия клавиатуры, я обратил внимание на криво вставленный в коннектор шлейф. Вообще, такие устройства требуют сноровки и опыта в процессе сборки, поэтому иногда зафиксировать шлейф бывает проблематично и он начинает просто болтаться в коннекторе. Казалось бы, причина неработоспособности клавиатуры найдена!
После снятия топкейса, нас встречает «голая» в буквальном смысле плата. По сравнению с любым x86-нетбуком тех лет, это устройство выглядит таким же простым, как GameBoy по сравнению с PSP...
На плате устройства и тут и там были видны следы неотмытого флюса. Все DIP-элементы (разъёмы), а также динамики паялись вручную. Судя по маске, в плате используется не более 5-6 слоев — что очень и очень мало для ноутбука... но в чём секрет?
Переворачиваем плату устройства и всё становится предельно ясно! Дело в том, что процессор, ОЗУ и Flash-память распаяны на отдельной плате, называемой System on Module (SoM), которая припаяна к основной методом поверхностного монтажа. Такие платы служат для быстрой разработки и прототипирования устройств в условиях ограниченного техпроцесса и бюджета — по сути, на хост-плате разводят лишь питание и периферию, а используют их везде: начиная от ЧПУ-станков, заканчивая кассовыми аппаратами!
В качестве сердца устройства используется система на кристалле WonderMedia WM8505, также известная как VIA VT8505. В её основе лежит ARMv5-совместимое ядро 926EJ-S на частоте 300МГц с 16Кб кэша, кастомный 2D GPU собственной разработки VIA, контроллер DDR2-памяти, а также большое количество самой разной периферии: от шин по типу SPI, I2C и UART, до SD и USB. И всё это в миниатюрном чипе за несколько долларов!
Снизу расположилась одна банка оперативной памяти типа DDR2 объёмом в 128МБ, а справа — микросхема SPI-флэш памяти, где хранится загрузчик U-Boot (BIOS) устройства.
Многим читателям корпорация VIA знакома как производитель чипсетов, аудио-кодеков и даже x86-процессоров... кто бы мог подумать, что они будут делать и ARM-чипсеты?
Немного выше процессора расположилась микросхема NAND-памяти производства Samsung. И как мы с вами видим по характерным потертостям и следам флюса - скорее всего этот чип сдули с MP4-плеера, который когда-то сдали в утиль. В Китае эти чипы памяти продают за бесценок сразу с частями платы устройств - их даже не всегда выпаивают!
Чуть выше SoM можно обнаружить 4 пина под колодку — это диагностический UART-разъём, который можно использовать для восстановления устройства при окирпичивании.
С левой части платы расположился USB-хаб AU6256, а рядом с ним — микроконтроллер производства Holtek (и тут процессор от «Тетриса»!) в весьма необычном корпусе. Скорее всего, он выполняет функции SMC и контроллера клавиатуры одновременно — эдакий мультиконтроллер «на коленке»!
С правой стороны платы у нас расположилась схема питания на основе чарджера SUN4001S, понижающего DC-DC преобразователя APW7145 (основная шина питания) и LDO SY8088, формирующий напряжение 3.3В. Немного правее расположился аудиокодек Wolfson WM1613G - чаще в таких ноутбуках можно найти что-то от самой VIA!
И... это всё! Вся схема ноутбука настолько простая и гениальная, что буквально состоит из SoM, микроконтроллера, USB-хаба, аудиокодека и простейших питальников...
❯ Включаем...
После сборки и включения ноутбука, я обрадовался что большая часть клавиатуры заработала нормально, но одна линия матричной клавиатуры всё же была повреждена. Осмотрев её, я обнаружил что клавиатура вся погнутая и... ну в общем, здесь явно постарались шаловливые ручки. Однако это не делает данный ноутбук бесполезным!
Помимо клавиатуры, мне не удалось отремонтировать и тачпад. Не знаю, что с ним делали, но даже GPIO-кнопки мыши не работают.
С завода здесь стоит Windows CE 6.0 с различным обучающим софтом для детей, но прошлый хозяин накатил сюда универсальную кастомную прошивку для устройств на WM8505 от PC_USER. Для верности я решил переустановить образ системы (благо он сохранился здесь): для этого достаточно лишь отформатировать SD-карту в FAT и скопировать папку script из архива в корень карты памяти. Поскольку в устройстве используется U-Boot, обновление прошивки реализовано за счёт использования autoscript'ов, которые заставляют загрузчик грузить ядро Linux или Windows CE с карты памяти и уже из юзерспейса копировать себя в NAND. Путем небольших манипуляций с скриптами, можно реализовать полноценный дуалбут или даже триплбут!
После установки системы, нас встречает такой родной рабочий стол... и вендор устройства сделал всё, чтобы опыт использования такого ноутбука был максимально приближен к полноценному компьютеру. Тут есть большое количество самого разного софта: начиная от офиса, заканчивая играми. И даже есть полноценный Windows Media Player вместе с TCPMP для поддержки YouTube:
Другие ревизии этого ноутбука с Wi-Fi и Ethernet могли также свободно сёрфить интернет. Из коробки был предустановлен пока ещё не совсем бесполезный PocketIE, а с помощью небольших манипуляций можно было даже установить Opera Mobile на актуальном в те годы движке Presto:
OpenNet откроет — и этого хватит!
Помимо этого, в устройстве был предустановлен клиент ещё популярного тогда Skype. Уж не знаю как он работал на Windows CE, но учитывая что нормальный порт на Android делали года три — возможно что определенные нюансы точно в нём были.
Касательно офиса — здесь было всё необходимое: начиная от клиента почты, заканчивая эдакой вариацией на тему Excel. В целом, такие ноутбуки чаще всего и покупали для использования в качестве печатных машинок, SSH-терминалов (есть порт Putty на WinCE) и других подобных целей. Интересно что для WinCE есть частичный порт MS Office, причём даже с PowerPoint'ом, но в этой прошивке его почему-то нет.
Ну и куда-же без игр! Под ARM WinCE было достаточно много портов различной классики: начиная от эмуляторов игровых консолей, заканчивая казуалками по типу Zuma от Astraware. Однако большинство игр и программ использовали библиотеку gx.dll, которая давала прямой доступ к фреймбуферу устройства и была доступна только на коммуникаторах и КПК с PocketPC/WinMobile на борту. Энтузиаст из Германии даже разработал свою реализацию gx через GDI (заведомо более медленную), но большинство игр работает не совсем корректно, а эмуляторы по типу PocketNES банально не влезают в экран:
Внимательные читатели могли заметить, что в таскбаре запущено много программ, но при этом оперативной памяти в устройстве всего 128Мб и её всё ещё достаточно для запуска ещё нескольких приложений. В чём-же секрет? В том, что Windows CE потребляла памяти даже меньше, чем Win95, но при этом на ней был доступен .NET и часть прелестей WinAPI времен Windows XP. При этом над оптимизацией программ действительно заморачивались и поэтому софт не только экономен к ОЗУ, но ещё и шустро бегает на горяченном 300МГц ARMv5 процессоре!
Все запущенные программы в сумме занимают 30 мегабайт памяти с учетом ядра системы. Впечатляет!
❯ Ставим Linux
Эти ноутбуки появились в золотое время развития Android, когда каждый вендор чипсетов старался поддерживать все доступные на рынке операционные системы. Поскольку WonderMedia разрабатывала 8505 в том числе и для MID (планшетов), для чипсета был доступен порт Android 1.5 и исходный код ядра Linux. Имея такие вводные данные, вполне очевидно, что гики рано или поздно смогли запустить на нём какой-нибудь дистрибутив.
На WM8505 доступно два образа: с Arch и Debian Lenny. Поскольку я никогда не пользовался Арчем и всю линуксоидную жизнь я сидел либо на Debian, либо на Slackware, я решил остановиться на Дебиане. Некий добродетель выложил на archive.org уже собранное ядро + rootfs, готовое к установке: нам достаточно лишь разбить SD-карту на два раздела (первый — 32Мб, второй — остальное доступное пространство) с помощью утилиты fdisk, отформатировать первый раздел в FAT и скопировать на него папку script с ядром:
su mkfs.fat /dev/sdb1 mkdir /mnt/wmboot mount /dev/sdb1 /mnt/wmboot tar -xvf ~/fatpart.tgz sync
И отформатировать второй раздел в ext2, распаковав туда rootfs:
su mkfs.ext2 /dev/sdb2 mkdir /mnt/wmrootfs mount /dev/sdb2 /mnt/wmrootfs tar -xvf ~/extpart.tgz sync
После этого можно вставить SD-карту в ноутбук, включить его и посмотреть на надпись «Loading Windows...», которая плавно сменяется на вывод kmsg :)
Единственный нюанс — здесь собрана минимальная рутфс со всем необходимым софтом, включая dpkg и apt. Чтобы поставить XOrg и другие программы нужно искать свисток на чипе Realtek RT3070, либо же организовывать локальный файловый репозиторий на USB-флэшке (ведь в комплекте нет даже веб-сервера, который можно было бы развернуть на локалхосте)... но это мы с вами оставим уже для следующей статьи :)
В общем и целом, гиковские перспективы у таких гаджета есть. Если бы у меня было чуточку больше времени, я бы портировал в фреймбуфер эмулятор NES и SEGA, как я это делал для детского MIPS-ноутбука и мы бы с вами даже провели тесты — чьи 300МГц быстрее!
❯ Заключение
Вот такая статья об интересном детском ноутбуке у нас с вами сегодня получилось. Конечно нельзя сказать, что такой ноутбук является альтернативой старенькому ThinkPad'у с Арчем на борту, но сама концепция и понимание того, что твой гаджет работает на ARM-процессоре, как минимум достойна внимания!
А если вам интересна тематика ремонта, моддинга и программирования для гаджетов прошлых лет — подписывайтесь на мой Telegram-канал «Клуб фанатов балдежа», куда я выкладываю бэкстейджи статей, ссылки на новые статьи и видео, а также иногда выкладываю полезные посты и щитпостю. А ролики (не всегда дублирующие статьи) можно найти на моём YouTube канале.
Как вам такой ноутбук?
Что больше всего любите в моих статьях из рубрики обзоров и моддинга ретро-гаджетов?
Очень важно! Разыскиваются девайсы для будущих статей!
Друзья! Для подготовки статей с разработкой самопальных игрушек под необычные устройства, объявляется розыск телефонов и консолей! В 2000-х годах, китайцы часто делали дешевые телефоны с игровым уклоном — обычно у них было подобие геймпада (джойстика) или хотя бы две кнопки с верхней части устройства, выполняющие функцию A/B, а также предустановлены эмуляторы NES/Sega. Фишка в том, что на таких телефонах можно выполнять нативный код и портировать на них новые эмуляторы, чем я и хочу заняться и написать об этом подробную статью и записать видео! Если у вас есть телефон подобного формата и вы готовы его задонатить или продать, пожалуйста напишите мне в Telegram (@monobogdan) или в комментарии. Также интересуют смартфоны-консоли на Android (на рынке РФ точно была Func Much-01), там будет контент чуточку другого формата :)
А также я ищу старые (2010-2014) подделки на брендовые смартфоны Samsung, Apple и т. п. Они зачастую работают на весьма интересных чипсетах и поддаются хорошему моддингу, парочку статей уже вышло, но у меня ещё есть идеи по их моддингу! Также может у кого-то остались самые первые смартфоны Xiaomi (серии Mi), Meizu (ещё на Exynos) или телефоны Motorola на Linux (например, EM30, RAZR V8, ROKR Z6, ROKR E2, ROKR E5, ZINE ZN5 и т. п., о них я хотел бы подготовить специальную статью и видео т. к. на самом деле они работали на очень мощных для своих лет процессорах, поддавались серьезному моддингу и были способны запустить даже Quake!). Всем большое спасибо за донаты!
Бывало у вас такое? Скачали вы анимешку в высоком качестве, закинули на свой царский 16K OLED телевизор, уже легли на кровать, приготовились наслаждаться японской анимацией и… Не работает. Нет русского звука. Нет русских субтитров. Ничего не понятно. Все русское лежит в каких-то внешних файлах. Лично я к каждому на улице подходил и спрашивал бывало ли у него такое, но ни одна собака мне не ответила.
Попробуете у источника вопрошать в чем же дело, как это заставить работать – вас в лучшем пошлют заниматься красноглазием. Чаще просто пошлют. Иногда пошлют пользоваться ПК для просмотра. Разумеется после всего этого никакого желания смотреть уже не останется. Но есть решение. Первый Профессиональный муксер анимер.
Воспользуйтесь Первым Профессиональным муксером аниме, чтобы навсегда забыть о проблемах с невоспроизводимым аниме. Профессиональный муксер делает все сам, не требует никакого красноглазия, максимально прост, минималистичен, не требует никаких настроек.
Но при всем при этом в силу своей профессиональной основы Первый Профессиональный муксер оставляет и опытным профессиональным пользователям пространство для настроек. Если вы профессионал, вы легко сможете переопределить дефолтные настройки, просто ознакомившись с поддерживаемыми опциями через mux-media -h.
Скачивайте Первый Профессиональный муксер аниме только из официальных источников на GitHub. Просто скачайте версию Профессионального муксера для Windows, положите в папку с аниме и запустите. Муксер профессионально сделает все как нужно и положит сделанное в подпапку /muxed.
На красноглазых системах все ненамного сложнее. Просто установите пакет MKVToolNix и сможете пользоваться профессиональным муксером анонимно, свободно и профессионально.
Первый Профессиональный муксер как лучшие образцы медиаплееров самостоятельно ищет файлы в подпапках по совпадению начала имени. Разумеется при дилетантской несовпадающей системе наименования Первый Профессиональный муксер ничего не найдет, как не найдут и плееры. Муксер не работает с дилетантскими системами. Пользуйтесь профессиональной системой наименования, например, Death Note 01.mkv и Death Note 01.rus.mka. Если файлы названы дилетантами, просто переименуйте файлы в соответствие с профессиональной системой.
Измените свою жизнь с Первым Профессиональным муксером аниме. Навсегда забудьте о красноглазии при просмотре аниме. Наслаждайтесь профессиональным опытом при использовании Профессионального муксера, получайте удовольствие от просмотра. Поделитесь профессионализмом с друзьями, расскажите им о Первом Профессиональном муксере аниме (если конечно они у вас есть).
Пользователи браузера Google Chrome уже не первый месяц сталкиваются с наглой попыткой блокировки различных расширений (в том числе полезнейшего uBlock Origin), которые не соответствуют какому-то там их новому "манифесту".
С каждым разом ограничения становились всё жёстче: то расширения самостоятельно отключались с настоятельной рекомендацией их удалить, то запрещалось их устанавливать с интернет-магазина Гугла.
Был рабочий способ, но вчера, после очередного обновления браузера, он перестал работать, а расширения теперь не включаются даже принудительно. К счастью, умные люди нашли новый обход, поэтому считаю своим долгом поделиться им со всеми.
1) Откройте пустой текстовый документ, и введите следующий код:
2) Переименуйте его, например в chrome_v2_fix.reg. Проследите, чтобы расширение поменялось на *.reg; (настоятельно рекомендую его сохранить, чтобы было проще использовать на разных компьютерах)
3) Закройте Хром и убедитесь, что все его процессы пропали из Диспетчера задач;
4) Запустите файл, согласитесь на добавление информации в реестр;
5) Вновь открываете Хром, заходите в меню с расширениями по ссылке chrome://extensions/, и включаете всё, что у Вас пытались отнять. Установка из магазина также становится доступна.
Благодарности уходят пользователям owl5053 и 0wn3dg0d с сайта github.
Здесь также содержатся инструкции для юзеров Линукса и Мака. На Винде сработало, проверено лично!
UPD Расширенная версия файла для различных хромоподобных браузеров. За дополнение спасибо @kbnikto.
В программировании существует десятки разных направлений, языков ещё больше, около 9000. Эта статья будет интересна для тех, кто только-только начинает свой путь разработчика или же для тех, кому просто интересно. К языку будут прилагаться библиотеки и фреймворки, которые нужны для обсуждаемых направлений (например, django для python в бэкэнде). В статье будут не только языки программирования, но суть от этого не меняется.
Направления и языки
Web-разработка
В web-разработке есть 2 основных поднаправления: Backend и frontend. Frontend это клиентская часть сайта, её видит пользователь и она отправляется клиенту с сервера в браузер. Backend это логическая часть сайта, она работает на сервере и делает всё, что пользователь не видит, например, обрабатывает платежи и т.д.
Frontend
Frontend это клиентская часть веба. Она отвечает за визуал сайта. Всё то, что видит и слышит пользователь на сайте - дело рук фронтендера. Браузер делает http(s) запрос на сервер, он получает HTML-страницу (и CSS с Javascript) и отрисовывает страницу. Ответ сервера может содержать: HTML-документ; данные, встроенные в HTML; ссылки на статические файлы (CSS, JS, изображения); JSON/XML/другие данные (если это API запрос).
И так, языки для frontend разработки:
HTML и CSS: Это не опционально. HTML обязателен, а без CSS сайт может работать, но вряд ли он будет красивым. Их нельзя назвать языком программирования, но пусть будут. Фреймворки и библиотеки для CSS:
Tailwind CSS: Utility-first CSS фреймворк, то есть разработчик использует набор предопределённых классов, каждый из которых имеет некоторое количество стилей. Очень гибкий и мощный.
Bootstrap: Самый популярный. Предоставляет адаптивную сетку, компоненты (кнопки, навигация, карточки и т.д.), JS-плагины.
Sass / SCSS: Препроцессор CSS, который расширяет возможности стандартного CSS, добавляя функциональность, такую как переменные, вложенность, миксины и многое другое.
JavaScript (JS): Двигатель для визуала сайта. Он добавляет интерактивность и динамическое поведение на веб-страницы. Фреймворки и библиотеки для JS:
React: Библиотека от Meta. Позволяет создавать компоненты. Упрощает разработку.
Vue.js / Vue 3: Модульная структура. Относительно простой фреймворк.
Angular: Полноценный MVC-фреймворк от Google. Работает на TypeScript. Хорошо подходит для крупных корпоративных приложений. Включает в себя маршрутизацию, формы, HTTP-клиент и т.д.
Svelte: Очень быстрый и лёгкий. Отлично подходит для микросервисов.
Backend это серверная часть веба. Обработка платежей, регистрация пользователей и всё то, что не видит клиент, делается тут.
Node.js: Это среда выполнения JavaScripts, которая позволяет использовать JavaScript для разработки серверной части. Фреймворки и библиотеки для Node.js:
Expess.js: Самый популярный и гибкий фреймворк, часто используемый в качестве основы для многих Node.js проектов. Он обеспечивает минимальный базовый набор функций для создания веб-приложений и API.
NestJS: Фреймворк, ориентированный на создание масштабируемых серверных приложений. Он использует модульную архитектуру, поддерживает TypeScript и предоставляет встроенные решения для валидации, маршрутизации, аутентификации и авторизации.
Fastify: Фреймворк, ориентированный на максимальную производительность и низкое потребление ресурсов, что делает его подходящим для высоконагруженных приложений.
Python: Этот язык многофункционален и его можно использовать в бэкэнде. Фреймворки и библиотеки для Python:
Django: Полноценный фреймворк, предназначенный для создания сложных веб-приложений, включает в себя ORM, систему шаблонов, админ-панель и многое другое.
Flask: Микрофреймворк, гибкий и легкий, подходит для небольших и средних проектов, а также для создания API.
FastAPI: Современный, быстрый фреймворк, ориентированный на создание API.
Java: Java доминирует в банках, финансовых платформах и крупных онлайн-сервисах (например, LinkedIn, Netflix, Amazon частично используют Java). В большинстве случаев используется Spring. Фреймворки и библиотеки для Java:
Spring: Один из самых популярных фреймворков, предоставляющий множество инструментов для разработки веб-приложений, включая управление зависимостями, аспектно-ориентированное программирование и доступ к данным.
C#: C# популярен в компаниях, работающих на Windows-инфраструктуре, особенно в Европе и США: от страховых компаний до госпорталов. Фреймворки и библиотеки для C#:
ASP.NET: Основной фреймворк C#. ASP.NET Core предоставляет широкий набор инструментов для создания веб-сайтов, API и других веб-сервисов.
Entity Framework Core: ORM (Object-Relational Mapping) фреймворк, который упрощает работу с базами данных. Позволяет работать с базами данных, используя объекты C# вместо SQL запросов.
Blazor: Фреймворк для создания интерактивных веб-интерфейсов, работающий как на стороне клиента (в браузере), так и на стороне сервера.
Go: Высокая производительность и простота. Фреймворки и библиотеки для Go:
Gin: Известен своей высокой производительностью и легкостью использования. Идеален для создания API и веб-приложений, требующих быстрой обработки запросов.
Echo: Легкий и быстрый фреймворк, ориентированный на производительность и простоту использования. Отлично подходит для создания API и веб-сервисов.
PHP: Классика веба. Фреймворки и библиотеки для PHP:
Laravel: Известен своей элегантностью, мощной системой шаблонов Blade, и богатым набором инструментов для разработки. Laravel часто выбирают для создания масштабных и сложных веб-приложений.
Ruby: Лаконичный и удобный. Фреймворки и библиотеки для Ruby:
Ruby on Rails (RoR): Самый популярный фреймворк, известный своей структурой MVC, удобством разработки и возможностями для создания масштабируемых веб-приложений. Он предоставляет готовые решения для работы с базами данных, маршрутизацией, представлением и многим другим, что значительно ускоряет процесс разработки.
Базы данных: Будучи backend разработчиком вам придётся работать с базами данных.
PostgreSQL: Гибкая система управления реляционными базами данных (СУБД). Удобно хранить геопространственные данные.
MySQL: Одна из самых популярных. Открытый исходный код. MySQL имеет меньше поддержки стандартов SQL, чем PostgreSQL.
SQLite: Лёгкая, встраиваемая система управления базами данных. SQLite не требует отдельного сервера, база данных хранится в одном файле на диске. Не предназначен для многопользовательского доступа с высокой конкуренцией. Для локального хранения.
MongoDB: Нереляционная (NoSQL) документо-ориентированная система управления базами данных, которая предназначена для хранения, обработки и масштабирования больших объёмов неструктурированных или полуструктурированных данных. MongoDB хранит данные в формате BSON (Binary JSON).
Redis (REmote DIctionary Server): Redis хранит данные в оперативной памяти, что обеспечивает очень быструю обработку запросов. Данные хранятся в парах "ключ-значение", что упрощает доступ к информации.
Docker / CI/CD / Nginx/Apache: Полезные вещи для бэкенда.
Системное программирование
Системное программирование - Разработка программного обеспечения, которое взаимодействует напрямую с железом. Это низкоуровневое программирование, где важна производительность и эффективность управления ресурсами. Системные программисты разрабатывают ОС, драйверы, компиляторы, виртуальные машины и антивирусы.
C: Фундамент всех ОС и системного ПО. Работает напрямую с памятью. Ядро Unix/Linux написано на C. Даёт полный контроль над памятью, но требует ручного управления памятью. Почти нет абстракции.
C++: Мощнее C, добавляет ООП, используется в движках и ядрах.
Rust: Безопасная альтернатива C / C++ без утечек памяти.
Assembly: Пишется для конкретного процессора (x86, ARM, RISC-V). Почти напрямую управляет CPU, регистрами, стеком.
Мобильная разработка
Создание приложений для смартфонов, планшетов и носимых устройств. Тут есть 3 поднаправления: нативные мобильные приложения; гибридные (на web-технологиях); кроссплатформенные.
Нативная разработка
Это создание мобильных приложений под конкретную операционную систему.
Kotlin: Разработка под android. Ститачески типизированный язык программирования, разработанный компанией JetBrains. Безопасен от NullPointerException. Выразительный синтаксис. Возможность интеграции с кодом на java.
Android studio: IDE специально для создания приложений под android.
Jetpack Compose: Упрощает и ускоряет процесс разработки интерфейсов за счёт меньшего объёма кода, мощных инструментов и интуитивно понятного кода. Использует kotlin для создания UI.
XML (eXtensible Markup Language): Язык разметки для хранения и передачи данных.
Swift: Разработка под IOS. Современный и безопасный.
Xcode: IDE для разработки под IOS.
UIKit: Предоставляет разработчикам набор элементов управления, такие как кнопки, метки, текстовые поля, а также возможности для обработки касаний и жестов, обеспечивая интуитивно понятное взаимодействие с пользователем.
SwiftUI: Декларативный UI-фреймворк от Apple.
Кроссплатформенная разработка
Один код работает и на android, и на IOS.
Flutter: Кроссплатформенный SDK от Google для создания красивых, нативных приложений для мобильных устройств. Быстрый рендеринг. Кастомный UI.
Dart: Основной язык для flutter. Простой синтаксис. Высокая производительность. Богатый набор библиотек.
React Native: Использует один и тот же код JavaScript для iOS и android. Основное преимущество React Native это возможность создавать приложения для iOS и Android, используя общий код на JavaScript.
Kotlin Multiplatform Mobile (KMM): Код пишется на kotlin и компилируется на обе ОС. UI пишется отдельно, но бизнес логика общая.
Гибридные и web-приложения
Такие приложения сочетают в себе элементы нативных и веб-приложений. Работают как web-приложения внутри обёртки. По своей сути, это веб-приложения (обычно написанные с использованием HTML, CSS и JavaScript), "упакованные" в специальную нативную оболочку (часто называемую WebView).
Ionic: Фреймворк для разработки гибридных кроссплатформенных мобильных приложений.
WebView Multiplatform Mobile: Кроссплатформенная библиотека для встраивания веб-контента в приложения для Android и iOS.
Xamarin WebView: Фреймворк для разработки кросс-платформенных мобильных приложений, предоставляет доступ к WebView для отображения веб-содержимого.
Tauri: Фреймворк для создания десктопных приложений с использованием веб-технологий. Во второй версии можно делать мобильные приложения. Написан на сложном rust.
Data Science / Аналитика данных
Data science - Наука о данных. Использует математику и статистику для обработки данных, извлечения полезной информации, выявления закономерностей и предсказания будущих событий. Они используют для этого статистические методы и машинное обучение.
Python: Де-факто стандарт в data science. Прост в изучении. Огромное сообщество. Богатейшая экосистема библиотек. Библиотеки для python, которые нужно знать аналитику данных:
NumPy: Для работы с многомерными массивами и матрицами. Линейная алгебра.
Pandas: Предоставляет мощные структуры данных.
Polars: Современная, очень быстрая альтернатива pandas. Оптимизированная для работы с большими наборами данных.
Matplotlib / Seaborn: Визуализация данных.
Scikit-learnt + keras: Машинное обучение. Прогноз данных.
Jupyter: Интерактивный блокнот для работы с кодом.
R: Язык специально для статистики. Имеет невероятно богатый набор пакетов для статистического анализа, визуализации.
SQL: Необходим любому специалисту по данным. Для хранения данных.
Scala: JVM-язык, сочетающий объектно-ориентированную и функциональную парадигмы. Основной язык для Apache Spark.
Julia: Создан специально для высокопроизводительных научных вычислений. Синтаксис похож на Python / MATLAB.
Машинное обучение и ML-инженеринг
ML-инженеринг (MLOps) - Инженерная дисциплина, которая фокусируется на машинном обучении. В отличие от Data Science, где основное внимание уделяется исследованию данных и построению моделей, ML-инженеринг охватывает весь жизненный цикл AI-продукта. Построение моделей, нейросетей, прогнозирование. Это инженерная часть Data Science, фокусирующаяся на промышленной эксплуатации. ML-инженеру нужно также знать математику на высоком уровне.
Python: Часто этот язык является лишь высокоуровневым интерфейсом, а фреймворки написаны на C++. Если бы модели обучались только на python, это было бы слишком медленно. Фреймворки и библиотеки python:
TensorFlow: Открытая библиотека машинного обучения. Предназначена для построения и обучения моделей машинного и глубокого обучения.
MLflow: Платформа с открытым исходным кодом для управления жизненным циклом машинного обучения.
Kubeflow: Набор инструментов для развертывания ML-воркфлоу на Kubernetes (использует Python для определения пайплайнов).
Научные и инженерные расчёты
Математика, физика, симуляции.
Python: Отлично подходит для научных вычислений. Простота изучения, огромное сообщество, богатейшая экосистема научных библиотек, отличная интеграция с другими языками и инструментами, поддержка всех этапов работы (прототипирование, анализ, визуализация, развертывание). Фреймворки и библиотеки python:
NumPy
SciPy: Построен на NumPy. Реализация алгоритмов: оптимизация, интегрирование, интерполяция, специальные функции, обработка сигналов/изображений, статистика, дифференциальные уравнения.
SumPy: Компьютерная алгебра.
Matplotlib: Гибкая и мощная библиотека для создания статических, анимированных и интерактивных 2D/3D графиков.
Mayavi, PyVista: Визуализация 3D данных и научных расчетов.
MATLAB: Специально для численных вычислений. Широко используется в инженерии (особенно в вузах и промышленности). Платный. Интуитивный ситнаксис.
Fortran: Непревзойденная производительность для задач с плотными численными расчетами (физика, механика жидкостей, метеорология, квантовая химия, вычислительная астрофизика). Отличная поддержка многомерных массивов и операций над ними (включая срезы).
Julia: Быстро набирает популярность в научных вычислениях.
C / C++: Абсолютный контроль над аппаратурой и памятью.
GameDev
Создание игр от мобильных до AAA. 2D и 3D. VR/AR.
C++ / Blueprints
Unreal Engine: Движок для больших и AAA игр. Красивая графика. Подходит для крупных игр с проработанными механиками и игр с упором на графику. Для мощного железа. На нём даже фильмы снимают. Чтобы делать игры на нём, нужно быть профессионалом.
C#
Unity: Подходит для большинства игр. Часто используется дли инди проектов. Большое сообщество и много ассетов. Много полезных функций. Для VR/AR хорошо подходит.
Godot: Поддерживает некоторые языки программирования, такие как C# и C++, есть собственный язык GDScripts. Активно развивается. Открытый, лёгкий, отлично подходит для 2D игр. Хороший выбор для новичков.
Phaser (JS): HTML5-движок для 2D игр в браузере. Прост и быстр в освоении. Идеален для веб-игр.
Lua: Скрипты в играх (Roblox, WoW и тд). Очень простой язык. Тоже вариант.
DevOps
DevOps (Development + Operation) - Подход к разработке ПО, объеденяющий разработчиков и IT-специалистов по эксплуатации с целью: ускорить релизы; повысить стабильность и безопасность; автоматизировать всё, что можно. В основных задачах у девопсера это CI/CD (непрерывная интеграция и доставка), контейнеризация, оркестрация контейнеров, автоматизации инфраструктуры, мониторинг и логирование.
Linux: Каждому девопсеру нужно знать linux. Linux это основная платформа для управления серверами, развёртывания приложений и автоматизации процессов в DevOps.
Bash: Для автоматизации. Скрипты. CI/CD. Bash-скрипты позволяют автоматизировать повторяющиеся задачи, экономя время и ресурсы.
Python: Python подходит для разных задач, включая написание сценариев, определение инфраструктуры в виде кода, создание конвейеров CI и CD, упрощение мониторинга и разработку пользовательских решений. Python работает с API многих облачных сервисов, таких как AWS, Google Cloud и Azure, что делает его незаменимым для облачной инфраструктуры.
Go: Создание собственных CLI-инструментов. Go позволяет разрабатывать и поддерживать собственные инструменты для автоматизации CI/CD, мониторинга, оркестрации. Многие популярные DevOps-инструменты написаны на Go, например Kubernetes, Docker, Terraform, Prometheus. Умение читать и писать на Go помогает лучше понимать и изменять их код.
Kubernetes: Оркестрация контейнеров. Автоматическое масштабирование. Балансировка нагрузки и управление состоянием контейнеров.
Jenkins: Инструмент для автоматизации процессов непрерывной интеграции (CI) и непрерывной доставки (CD) в DevOps. Он помогает разработчикам быстрее и эффективнее интегрировать изменения в код, находить и исправлять ошибки на ранних этапах, а также автоматизировать рутинные задачи.
Prometheus и Grafana: Мониторинг облачных приложений и сервисов.
Cloude
Cloud Developer - Специалист, чья работа сосредоточена на облачных платформах и сервисах. В отличие от традиционных разработчиков, он оперирует ресурсами (вычислительными мощностями, хранилищами, сетями), предоставляемыми по запросу через интернет, а не управляет локальными серверами напрямую. Разработчик облачных решений отвечает за проектирование, разработку, развертывание, масштабирование и поддержку приложений, сервисов и инфраструктуры, непосредственно работающих в облачной среде.
Amazon Web Services (AWS): Самая популярная облачная платформа, предоставляющая широкий набор сервисов для вычислений, хранения данных, аналитики, машинного обучения и многого другого.
Microsoft Azure: Облачная платформа от Microsoft. Популярная в корпоративном сегменте.
Google Cloude Platform (GCP): Облачная платформа от Google.
IBM Cloude: Платформа с акцентом на корпоративные решения, блокчейн и AI.
Oracle Cloude: Облачные решения от Oracle. Для крупного бизнеса и с фокусом на базы данных.
Для взаимодействия с облачными API, автоматизации задач инфраструктуры (IaC), написания скриптов развертывания и непосредственно разработки облачных приложений и сервисов разработчики облака активно используют языки программирования, такие как:
Python: Универсальность, богатые SDK для облаков.
Go (Golang): Высокая производительность, популярен для инструментов Cloud Native.
JavaScript / TypeScript: Фронтенд и бэкенд, серверные среды типа Node.js.
Java: Традиционно силен в корпоративной среде, особенно с Azure/IBM.
C#: Ключевой язык для экосистемы Microsoft Azure.
Ruby: Менее распространен, но используется, например, в DevOps инструментах.
Кибербезопасность
Кибербезопасность (Cybersecurity) - Комплексная практика защиты информационных систем, сетей, устройств, программ и данных от цифровых атак, несанкционированного доступа, повреждения или кражи. В современном мире, где бизнес, государственное управление и личная жизнь неразрывно связаны с цифровой средой, кибербезопасность становится критической необходимостью, а не просто опцией.
Основные направления кибербезопасности:
Сетевая безопасность: Защита инфраструктуры от атак (DDoS, MITM, эксплойты).
Информационная безопасность: Шифрование данных, контроль доступа, защита от утечек.
AppSec (безопасность приложений): Анализ кода, защита веб- и мобильных приложений.
Криптография: Разработка и взлом алгоритмов шифрования.
SOC & Мониторинг: Обнаружение и реагирование на инциденты в реальном времени.
Пентестинг и Red Teaming: Имитация атак для поиска уязвимостей.
Операционные системы для тестирования:
Kali Linux: Основной дистрибутив для пентеста.
Parrot OS: Альтернатива Kali с акцентом на анонимность.
BlackArch: Расширенный набор инструментов для хакеров.
Социальная инженерия: SET (Social-Engineer Toolkit), Maltego
Языки программирования:
Python: Автоматизация, скрипты для анализа угроз.
Bash/PowerShell: Администрирование, анализ логов.
C/C++: Разработка эксплойтов, анализ вредоносного ПО.
Go: Сетевые инструменты, быстрое создание утилит.
IoT и встаиваемые системы
Встраиваемые системы - Специализированные компьютеры, встроенные прямо в устройство, которым они управляют. Их задача это выполнять конкретные функции (управление двигателем, сбор данных с датчика и т.д.).
IoT (Internet of Things) - Когда такие встраиваемые системы получают возможность связываться друг с другом и с интернетом.
С чем должен уметь работать инженер IoT:
Микроконтроллеры (MCU)
Микропроцессоры (MPU)
Датчики: Температура, влажность, движение (акселерометр/гироскоп), свет, давление, газ, GPS и т.д.
Интерфейсы связи
Языки программирования:
C: Прямой доступ к железу, минимальные накладки.
C++: Набирает силу для сложных задач с ООП, где ресурсы позволяют.
Python: Для прототипирования, инструментов, мощных MPU (Raspberry Pi) и обработки данных на сервере / шлюзе.
Rust: Новый, но перспективный. Безопасность памяти + производительность как у C/C++. Начинают использовать в ядре Linux.
Assembler: Для самых критичных кусков кода или когда ресурсов очень мало.
ОС:
Без ОС (Bare Metal): Код работает напрямую на процессоре. Максимум контроля, минимум накладок.
RTOS (Real-Time OS): FreeRTOS (самый популярный), Zephyr (набирает ход, современный), ThreadX, VxWorks (для высоконадежных систем). Гарантируют времена реакции.
Linux: Для мощных MPU (Raspberry Pi, BeagleBone). Yocto Project/Buildroot — для сборки кастомных образов.
Блокчейн и Web3
Блокчейн - По сути, это распределенная база данных (цифровой реестр), где записи ("блоки") связаны в цепочку криптографически. Данные хранятся не на одном сервере у корпорации, а у тысяч участников сети
Web3 - Идея следующего поколения интернета поверх блокчейна. Суть такова, пользователь владеет своими данными, цифровыми активами (NFT, токены) и участвует в управлении сервисами. Вместо обычных платформ децентрализованные приложения (dApps).
ЯП:
Solidity: АБСОЛЮТНЫЙ мастхев для Ethereum и EVM-сетей (Polygon, BSC и т.д.). Похож на JavaScript, но со спецификой.
Rust: Доминирует в Solana, Near, Polkadot (Substrate), всё чаще пишут смарт-контракты и на нем. Сложнее, но мощнее.
Vyper (для Ethereum): Альтернатива Solidity, фокус на безопасность и читаемость (синтаксис ближе к Python).
Go: Для разработки нод (клиентов блокчейна), утилит.
Desktop
Десктоп-разработка - Создание приложений, которые работают напрямую на ОС пользователя. В отличие от веба или мобилок, тут есть прямой доступ к железу, файловой системе и нативным API. Мощь, контроль, но и ответственность за стабильность.
Electron: JavaScript + Chromium + Node.js. Плюсы: Пишешь как веб-приложение (HTML/CSS/JS). Минусы: Жрет память как не в себя.
Qt (C++): Мощь, скорость, зрелость. Используют в AutoCAD, Tesla. Поддержка 3D, сетей, БД.
Avalonia (.NET): Кроссплатформенный аналог WPF. Пишешь на C# — работает на Windows/macOS/Linux.
Flutter (Dart): Добрался до десктопа. Пока сыроват, но трендовый.
Tauri (Rust): Альтернатива Electron. Бекенд на Rust, фронт - любая веб-технология. Размер приложения ~10 МБ вместо 150 МБ у Electron.
Разработка корпоративных решений (Enterprise)
Erprise-разработка - Создание софта для крупного бизнеса: банки, страховые, логистика, ритейл, госсектор. Системы обрабатывают миллионы транзакций, хранят терабайты данных и должны работать 24/7.
ЯП:
Java (Spring Boot, Jakarta EE, Quarkus): Король корпов.
C# (.NET Core ASP.NET): Популярен в банках и госсекторе.
Python (Django, FastAPI): Для аналитики, скриптов.
ESB: Apache Camel, MuleSoft, IBM Integration Bus.
API Gateway: Kong, Apigee, AWS API Gateway.
Очереди: Apache Kafka (лидер), RabbitMQ, IBM MQ, Azure Service Bus.
FinTech (Financial Technology) - Область, в которой пишут технологии для финансов. Например, финтехи пишут платёжные системы, необанки, аналитику и бюджетирование, кридитные платформы, алготрейдинг, B2B-решения. Финтех разработчик занимается разработкой: бизопасных API и клиентских приложений; обработкой денежных транзакций, комиссий, волют; реализацией сложных бизнес-правил.
Стек:
Java: Часто используется.
Kotlin: Современная альтернатива Java.
Go: Высокая производительность, минимализм.
Python: Быстрая разработка, аналитика. Скоринг.
C#: Банковский и страховой сектор.
Rust: Безопасность и производительность.
Если понравилась статья - рекомендую подписаться на телеграм‑канал NetIntel. Там вы сможете найти множество полезных материалов по IT и разработке!
Тестирование локальных дисков и систем хранения данных: подводные камни. Часть 3 – цифры и предварительные итоги
Тестирование локальных дисков и систем хранения данных: подводные камни. Часть 4 - ребилд и прочие ситуации «ой пропали диски».
Тестирование локальных дисков и систем хранения данных: подводные камни. Часть 5 – другие варианты виртуализации
Диски
При покупке дисков «под тесты» у нас были разные проблемы
1. Максимальное число дисков. На сервере, выбранном под тесты, (какая-то достаточно старая Supermicro 2U, материнскую плату попозже посмотрю) можно было поставить всего 6 NVME дисков. Это лучше, чем у меня было в 2021 году, тогда на сервере было всего по два слота на панели под NVME, остальные SAS. Или же было всего 4, то есть по 2 на сокет? Не помню.
На новых серверах, скорее всего это будут Supermicro Hyper SuperServer SYS-221H-TN24R, заявлено 24 front hot-swap 2.5" NVMe*/SAS*/SATA* drive bays. Надо будет еще раз посмотреть и посчитать, стоит ли оно того.
Ирония ситуации в том, что, может быть, нам больше 150-200k IOPS блоком 4k и не надо, а с этим справится и младшая Huawei Dorado 5000 v6, даже не v7. Которых (v7) то даже нам пока не поставляют. Пока писалась статья, может уже и стали поставлять, давно не спрашивал.
Зато теперь есть проблема с Write amplification. Теперь же оптимизация 512-4096-512 плюс файловая система может дать, в кривых руках (например, моих), Raid write penalty не 4, как положено по написанному в середене нулевых калькулятору, а x4x4, то есть x16.
4. Прочие не заданные вопросы. Почему не Linstor? Потому что Linstor, прежде всего, нужно долго тестировать в разных сценариях поверх дисков. Это на всяких SMM помойках в зоне ру пишут «мы запустили русский HGUI к Linstor, аналоговнет» - но нам работать надо, причем в сценариях, когда отказать может не один диск, и даже не один сервер, а стойка целиком. На метрокластер фирма пока не заработала, хотя уже приценивается. Отсюда обязательные требования по MPIO, причем не с переключением за 2 минуты, и отработка сценариев отказов. Что там у Linstor с MPIO? FC в топку, Cisco Nesux, особенно с Fabric Extenders (FEX) – на помойку, глючное под нагрузкой. Juniper у меня и не было. Arista топ. Но, посмотрим. Соседний отдел уже полгода мотает от «хотим Linstor» до «SupremeRAID купите позязя». Потом они пойдут смотреть на weka, vastdata (Cosmos), vast.ai.
Выбор ОС.
Разные ОС по разному работают с дисками. Поскольку Broadcom ESXi стал не просто дорого, а очень дорого, то выбор остался между Microsoft Hyper-V (но нужно сразу считать стоимость DC лицензии, плюс лицензии SCOM, SCVMM) и Proxmox. Итогом, понятно, будет гибридная инфраструктура – часть в облаке, часть на Proxmox, часть на Windows. У нас тут без предрассудков. Почему не чистый, ванильный KVM? Не знаю, как-то не рассматривали этот вариант.
Заявлено: - Random 4KB READ: Up to 1,000,000 IOPS - Random 4KB WRITE: Up to 400,000 IOPS
Точнее данные описаны в таблице 1: Table 1: Drive Performance – PRO
И начинаются фокусы. Во первых, для разных емкостей и моделей заявлена разная производительность. Во вторых, для разных тестов использована разная глубина очереди: • Sequential workloads measured using FIO with a queue depth of 32 • Random READ workloads measured using FIO with a queue depth of 256 • Random WRITE workloads measured using FIO with a queue depth of 128
или: Latency values measured under the following configuration: • Random workloads using FIO with 4KB transfers and a queue depth of 1
Особо надо обратить внимание на питание и охлаждение. 3. Power limiting is configured through Set/Get Features Power Management. 4. Power consumption measurements are for reference only; actual workload power consumption will vary
Указано, что в среднем диски выдают до 15 ватт тепла, но в пике указано потребление до 2 ампер по линии 12 вольт, то есть 24 ватта на диск. На 6 дисков это плюс 150 ватт. Проблема не в блоках питания, а в том, что диски стоят спереди, и процессоры «за ними» обдуваются весьма горячим воздухом. В теории у нас на входе +20, а на процессоры приходит воздух уже +30, а то и +35, и на выходе получаем и +70..+80 на самих процессорах, и обдув памяти с ее нагревом. Поэтому не забывайте сразу настроить мониторинг CPU \ RAM temp, через IPMI – iBMC – iDRAC – iLO, или что там у вас. И, само собой, не забывайте считать пределы отведения по теплу, иначе получите, рано или поздно, что ваше охлаждение из N+1 превратилось в N+0.
Еще немного теории, теперь про DiskSPD.
У DiskSPD есть несколько критичных параметров. Это: Измененная методика работы в последней версии, цитата: Previously Diskspd would issue the requested number of I/Os (T0), then receive and record one I/O at a time (T1)
С рекомендацией: Since these changes can be so dramatic, you should re-baseline your storage performance using the latest version of Diskspd. To keep pace with the advances in disk speeds and the improvements in Windows Server 2025, we’ve made investments in our storage performance benchmark tool to get you an accurate measure of latency.
Кстати, я там плакал, что нет экспорта в XML? Он есть: -R[text|xml] Display test results in either text or XML format (default: text).
Никогда не ходил в эту секцию библиотеки, а, видимо, придется: Event Tracing for Windows (ETW) parameters
Всплыли некоторые неочевидные (если не читать) подробности, например, конфликтующие параметры: -F<count> Total number of threads. Conflicts with -t, the option to set the number of threads per file. -t<count> Number of threads per target. Conflicts with -F, which specifies the total number of threads. Поэтому, если вы используете несколько целевых файлов, и ключ –t – как в примере: diskspd [options] target1 [ target2 [ target3 ...]
То у вас число потоков (тредов, нитей) будет расти с ростом числа файлов. Что надо было бы мне учесть перед тестами, но я, конечно, не учел.
Еще немного теории, уже почти все.
В школе всех учили и учат, что есть один путь решения и одно правильное решение. Поезда встречаются на определенном полустанке, машина из А в Б приедет за 5 часов 55 минут, итд. В техническом институте учат, что все ваши измерения – фигня полная. Не бывает ровно 28 сантиметров, ровно 22 секунды. Бывает 28 сантиметров плюс минус погрешность инструмента, плюс минус погрешность методики, плюс минус систематическая и так далее, поэтому «примерно 24-29 см» приемлемый результат. Хотите большей точности – работайте с ошибками и инструментами. Курса со второго (иногда с первого) учат, что ошибка – это нормально. Лучше, конечно, не делать грубых ошибок, но умеренно ошибаться при опытах и постановке опыта «тоже сойдет». Грубых ошибок делать не надо, ТБ нарушать не надо. Там же учат иногда подгонять ответ под требуемый результат, и оценивать результат с точностью до порядка. Так что полученные ниже результаты – повод для обсуждения, где именно можно улучшить методику, какие параметры покрутить. Или же все переписать и переделать.
Тесты и результаты.
Windows Server 2019 и 2022: сопоставимые результаты. Хотя, еще как посмотреть, насколько сопоставимые, и в каких сценариях. Например ResiliencySettingName: Parity в Server2019 работало с багами, до какого-то очередного фикса. Тесты существенно округлены в основном в меньшую сторону, то есть 142к > округлено вверх до 150к, 139к округлено куда получится. Number of threads per target: 10 Number of outstanding I/O requests per-target per-thread: 16 target:1 Кеширование: выключено Тип пула (New-StoragePool): LogicalSectorSizeDefault: по умолчанию. Типы дисков: New-Volume ProvisioningType: Thin, Fixed. Результаты сопоставимы для обоих типов дисков (что очень странно для поклонников старой школы), поэтому приводятся без разбивки. Форматирование: NTFS 4k ResiliencySettingName: Mirror Чтение блоком 4к: 600к IOPS Запись блоком 4к: 250к IOPS
Чтение блоком 64к: 450к IOPS Запись блоком 64к: 100к IOPS
Number of threads per target: 15 Number of outstanding I/O requests per-target per-thread: 16 Targets:4 ResiliencySettingName: Mirror
Чтение блоком 4к: 2500к IOPS Запись блоком 4к: 900к IOPS
Чтение блоком 64к: 650к IOPS Запись блоком 64к: 150к IOPS
Следующий вариант тестов: Number of threads per target: 15 Number of outstanding I/O requests per-target per-thread: 16 Targets:4 ResiliencySettingName: Parity. Важно: я с этой настройкой не экспериментировал, хотя в 1 и 2 частях написано про важность грамотной настройки именно в этой части. Поэтому производительность в Parity на запись, при настройках по умолчанию, будет отвратительной.
Чтение блоком 4к: 2800к IOPS (внезапно для меня, чтение для Parity работает отлично) Запись блоком 4к: 45к IOPS. Да, просадка с 900k до 45k. Не в 4 раза, и даже не в 10. Выглядит, как результат все той же проблемы – read-modify-write, когда из страйпа читается один блок, изменяется и перезаписывается.
Чтение блоком 64к: 650к IOPS Запись блоком 64к: 20к IOPS Огромная просадка по записи. Просто чудовищная.
При этом, я смотрю на среднее отклонение, и вижу в нем какие-то всплески на 10-20% . Что это было? Меня на повторное проведение лабораторных работ в институте отправляли и за меньшие отклонения и нарушения. Видимо, придется все переделывать.
Windows Server 2025. В 2025 сервере обещали улучшить, углубить, итд. Посмотрим Number of threads per target: 15 Number of outstanding I/O requests per-target per-thread: 16 Targets:4 ResiliencySettingName: Mirror
Чтение блоком 4к: было 2500к IOPS, стало: почти 3000к IOPS Запись блоком 4к: было 900к IOPS, стало почти 1000 к IOPS. Опять наблюдается разброс в скорости между тонкими и фиксированными дисками, что говорит о том, что надо проводить не 2 теста по 5 минут, а 6 тестов по 10 минут и смотреть среднее, да и на задержки поглядывать.
Чтение блоком 64к: 650к IOPS. Без существенных изменений. Запись блоком 64к: 150к IOPS. Без существенных изменений.
Следующий вариант тестов:Number of threads per target: 15 Number of outstanding I/O requests per-target per-thread: 16 Targets:4 ResiliencySettingName: Parity. Важно: я с этой настройкой не экспериментировал, хотя в 1 и 2 частях написано про важность грамотной настройки именно в этой части. Поэтому производительность в Parity на запись, при настройках по умолчанию, будет отвратительной.
Чтение блоком 4к: было 2800к IOPS, стало почти 3000к IOPS. Запись блоком 4к: было 45к IOPS, стало 80к IOPS.
Чтение блоком 64к: было 650к IOPS. Без существенных изменений. Запись блоком 64к: было 20к IOPS. Стало 30 к IOPS.
Заключение
Тестирование только DiskSPD или FIO показывает некие повторяемые цифры, которые напрямую не конвертируются в ответ «будет ли работать SQL быстрее, и, если да, то насколько». Подойти ближе к ответу позволяют: SQLIOSim SQL Query Stress Tool HammerDB