Pull to refresh
2518.14
RUVDS.com
VDS/VPS-хостинг. Скидка 15% по коду HABR15

Повышение живучести SSD за счёт его превращения из QLC в SLC

Level of difficultyMedium
Reading time14 min
Views38K
Original author: Gabriel Ferraz

В этой статье мы займёмся беспрецедентным экспериментом! Я шаг за шагом проведу вас через процесс преобразования SSD на базе QLC NAND в SLC SSD, что позволит значительно повысить его ресурс и общую производительность.

▍ Спецификация испытуемого SSD



На роль испытуемого я выбрал Crucial BX500, который мы уже много раз тестировали, освещая этот процесс как на нашем сайте, так и на YouTube-канале.

Дисклеймер!!!
Во-первых, хоть эта процедура и безопаснее оверклокинга, она всё равно требует осторожности. Приступайте к ней, только если сильно заинтересованы, так как я не несу ответственности в случае допущенных вами ошибок. Тем не менее я постараюсь объяснить всё максимально подробно и понятно, чтобы минимизировать возможное недопонимание.

Во-вторых, этот процесс лишает гарантии любой SSD. И помните, при прошивке накопителя все его данные будут стёрты, поэтому обязательно предварительно сделайте резервную копию.

▍ Необходимые инструменты


Для выполнения процедуры потребуется переходник SATA/USB 3.0 с контроллером моста Jmicron JMS578, а также пинцет для замыкания контактов переключения режима ROM/Safe на печатной плате SSD.


▍ Техническая спецификация


Прежде чем перейти к самой инструкции, разберём наш SSD чуть подробнее.

▍ Контроллер


Контроллер SSD отвечает за обработку всех задач управления данными, включая Over-Provisioning (резервирование части флэш-памяти накопителя под кэш) и сбор мусора, а также ряд фоновых функций. Естественно, всё это сказывается на общем быстродействии накопителя.


В выбранном SSD используется контроллер SM2259XT2 от Silicon Motion, представляющий обновлённую версию SM2259XT.

В данном случае это одноядерный контроллер, то есть в нём за управление NAND-памятью отвечает всего одно ядро, имеющее 32-битную архитектуру ARC, а не привычную ARM. Рабочая частота контроллера достигает 550 МГц, но по следующему скриншоту мы увидим, что в этом проекте он работал при 437,5 МГц.

Контроллер также поддерживает 2 канала связи со скоростью шины до 800 МТ/с. При этом каждый канал может выполнять до 8 команд Chip Enable, что позволяет контроллеру взаимодействовать с 16 кристаллами одновременно, используя технику чередования.


Этим он и отличается от своего предшественника, SM2259XT, который поддерживал 4 канала, 4 команды Chip Enable и взаимодействие максимум с 16 кристаллами NAND.

▍ DRAM Cache или H.M.B.


Любому топовому SSD, который стремится обеспечить последовательно высокую производительность, требуется буфер для хранения таблиц сопоставления (Flash Translation Layer). Это позволяет повысить производительность и отзывчивость.

Поскольку SATA SSD не имеет DRAM-буфера, он не поддерживает буфер памяти хоста (Host Memory Buffer, HMB).

▍ NAND Flash


Что касается самого хранилища, то наш SSD на 500 ГБ содержит 2 микросхемы NAND с маркировкой NY240, которая при декодировании превращается в модель N48R компании Micron с номером MT29F2T08GELCEJ4-QU:C (имеется ввиду один кристалл, которых в каждой микросхеме 2), — прим. пер.). В данном случае это кристаллы ёмкостью 1 Тб (128 ГиБ), содержащие 176 слоёв данных и 195 затворов, обеспечивающих общую эффективность 90,2%.


В нашем SSD каждая микросхема NAND Flash содержит 2 кристалла ёмкостью 1 Тб, что даёт 256 ГБ. То есть всего мы имеем 500 ГБ. С контроллером они взаимодействуют при скорости шины 262,5 МГц (525 МТ/с), что значительно меньше возможностей NAND. Эти кристаллы N48R могут работать при скорости 800 МГц (1 600 МТ/с).

Есть несколько причин для их медленной работы, например, производитель решил снизить энергопотребление и нагрев. А может, эта партия микросхем не проходит контроль качества Micron при более высоких частотах или также имеет меньшую долговечность, что обычно приводит к снижению стоимости NAND-памяти.

▍ Программное обеспечение для проекта


Поскольку это контроллер Silicon Motion, мы будем использовать их же популярный инструмент MPTools. Стоит отметить, что такое ПО не предоставляется производителем, а утекает через инсайдеров и размещается на русских или китайских форумах.


Для этого проекта мы задействуем SMI SM2259XT2 MPTool FIMN48 V0304A FWV0303B0, так как он совместим с контроллером и микросхемами памяти.


Прежде чем вносить модификации, нужно выяснить некоторые параметры SSD, чтобы их сохранить. Значения, которые мы будем устанавливать, являются пресетом от другого SSD, который может иметь свои параметры. Нам нужно получить информацию о:

  • Flash IO Driving и соответствующих подразделах;
  • Flash Control Driving;
  • Flash DQS/Data Driving.

Для этих параметров используются шестнадцатеричные значения, которые должны меняться в соответствии с нужной скоростью, которую мы настроим.

У накопителя есть и многие другие параметры вроде:
  • Control ODT (On-die Termination);
  • Flash ODT (On-die Termination);
  • Schmitt Window Trigger;

Для их получения нужно перейти на главный экран MPTools:


Затем кликнуть Scan, чтобы просканировать все совместимые накопители в системе:


После этого, если всё пройдёт гладко, SSD будет показан на порту 1. Напомню, что пока переводить SSD в режим Safe Mode/ROM Mode не нужно.


Теперь дважды кликаем по синей надписи Ready (FW: M6CR061, MN48R), чтобы открыть следующий экран с информацией об SSD:


Далее нужно кликнуть по Card mode и CID Settings, чтобы увидеть все параметры, установленные на SSD с завода.


Помимо этих параметров, здесь мы также видим скорость контроллера и NAND-памяти, которую ради чистоты сравнения оставим неизменными.


▍ Применение конфигурации


Сначала нужно кликнуть Edit Config в верхнем правом углу. По умолчанию установлен пароль «space 2x», то есть буквально « ».


После включения возможности настройки, мы сначала дадим нашему проекту имя, которое введём в поле Model Name. Я назвал его «SSD SLC Test».

Далее добавим к этой новой прошивке тег. В красной рамке под номером 3 нужно выбрать поле Firmware Version и ввести значение на своё усмотрение. Я в качестве примера указал «SSD-SLC».

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

Начнём с верхних двух, Flash Control Driving (Hex) и Flash DQS/Data Driving (Hex). Как мы видели на предыдущих скриншотах, эти параметры сопровождаются значениями 66 в шестнадцатеричной системе. Их мы оставим:


Далее перейдём к частотам. На скриншоте ниже показана установка двух их значений. В этой программе частота CPU по умолчанию установлена на 500 МГц, а NAND на 250 МГц. Частота NAND слегка повысится, а CPU — понизится. В целях справедливого сравнения я не буду их здесь разгонять. Далее мы оставим Output driving со значением 03H, отражающим сигнал, максимально близкий к 04H, который был у SSD.


Осталось разобраться с тремя последними настройками: Flash ODT, Control ODT и Schmitt Window. Для этих параметров мы устанавливаем значения, обведённые красным.


Хорошо, вот мы и подошли к завершению очередного этапа. Следующий шаг начнётся с изменения ПО, поскольку по умолчанию эта версия MPTools не поддерживает нужные нам изменения.

Сначала переходим в папку UFD_MP, расположенную в корневом каталоге.


В ней нужно найти файл конфигурации Setting.set и открыть его блокнотом Windows.


Внутри понадобится внести два изменения. Первое коснётся параметра ENFWTAG=1 в разделе [Function]. Его значение нужно установить на 0.


Второе изменение производим в разделе [Option], а именно добавляем дополнительный параметр: EnSLCMode=1. Затем закрываем файл и заново открываем MPTools.


После запуска программы видно, что в разделе Select Procedure теперь есть опция Force SLC Mode, которую нужно включить. Но давайте не будем спешить, потому что ещё не закончили настройку. Нет смысла пытаться записать эту новую прошивку на SSD, если он всё равно продолжит работать в своём штатном режиме, будь то TLC или QLC.


Теперь мы достигли важного этапа, который актуализирует все внесённые изменения. Нам нужно перенести файлы загрузки и инициализации прошивки из каталога в корне MPTools в другой каталог программы.

Сначала возвращаемся в корневой каталог MPTools и открываем каталог Firmware.


В нём находим каталог 2259, который относится к контроллеру SM2259XT2 нашего SSD. Внутри этого каталога должен присутствовать другой каталог, IMN48, а также файл конфигурации и файл параметров.


Заходим в IMN48, где находим множество файлов и других каталогов.


Здесь открываем каталог 00 и выбираем всё его содержимое.


Далее копируем (не вырезаем) всё это в предыдущий каталог 00, который в итоге будет выглядеть так:


Затем заходим в каталог XT2 и копируем из него файл BootISP2259.bin в тот же каталог 00.


Далее копируем все эти файлы в каталог уровнем выше, 2259:


Важно! Эта процедура с файлами предназначена конкретно для комплекта SM2259XT2 + NAND N48R.

Для других SSD с иными микросхемами памяти процедура та же, но меняются имена каталогов. Каталоги N48 будут названы в соответствии с производителем памяти, как показано в примере ниже с SSD на базе контроллера SM2259XT2 и памяти KIOXIA BiCS5.

P.S.: некоторые модели NAND могут не быть на 100% совместимыми. Пока что я проводил тестирование только с продуктами Intel и Micron.


Теперь вернёмся в MPTools и снова перейдём в раздел Parameter, чтобы проверить внесённые изменения.


Если всё верно, переходим в раздел Test и далее в Parameter, представляющий главный экран программы. Теперь нужно перевести SSD в режим ROM и снова закрыть ПО.

▍ Насколько увеличился срок службы?


Чтобы точно вычислить ресурс накопителя, нам потребуется следующая информация:

  • Write Amplification Factor (Коэффициент усиления записи)
  • NAND: Program/Erase Cycle (цикл программирования/стирания)
  • SSD Capacity (ёмкость)

Располагая этими тремя параметрами, мы можем вычислить TBW (terabytes written, количество терабайтов, которые SSD может записать за весь срок службы), но нужно иметь ввиду, что это значение будет приблизительным. Для более точных расчётов потребуется использовать уже более сложные параметры JEDEC JESD218A вроде Wear-Leveling Efficiency (W.L.E., эффективность выравнивания износа).

Используя эти простые вычисления для SSD в штатном режиме, мы получим показатель TBW равный 120 ТБ, а Program/Erase Cycle для микросхем N48R в районе 900 P.E.C. Откуда я это узнал? Мне удалось получить доступ к спецификации NAND-памяти. Опираясь на эту информацию, можно посредством следующих расчётов прийти к описанному ниже заключению:


120 TB (TBW) = (900 P.E.C. x 0.5 TB)
———————-
X (W.A.F)
X = 3.75 W.A.F.

Мы видим, что на основе этих данных показатель WAF нашего SSD в его штатном состоянии будет достаточно высок — в районе 3,75 — при тестировании в практических сценариях он оказался ближе к 3,8.

А теперь в режиме pSLC параметры меняются. Согласно спецификации, NAND на основе этого кристалла может выдержать до 60 000 циклов P/E, после чего его ёмкость падает до 0,12 Тб (120 ГБ). Когда я произвольным образом тестировал этот SSD, то заметил, что его WAF оказался ниже 2, что привело к значительному повышению TBW.

X TB (TBW) = (60.000 P.E.C. x 0.12 TB)
———————-
1.8 (W.A.F)
X = 4000 TB (TBW)

Здесь наблюдается существенный прирост TBW — от 120 ТБ (500 ГБ QLC) до 4,000 ТБ (120 ГБ pSLC), что составляет более 3333%.

▍ Тестовый стенд


  • Операционная система: Windows 11 Pro 64-bit (Build: 23H2)
  • Процессор: Intel Core i7 13700K (5.7GHz на всех ядрах) (технология E-cores Hyper-threading отключена)
  • RAM: 2 × 16 GB DDR4-3200MHz CL-16 Netac (c/XMP)
  • Материнская плата: MSI Z790-P PRO WIFI D4 (Bios Ver.: 7E06v18)
  • GPU: RTX 4060 Galax 1-Click OC (Драйверы: 537.xx)
  • (Накопитель с ОС): SSD Solidigm P44 Pro 2TB (Прошивка: 001C)
  • Тестируемый SSD: SSD BX500 “SLC-Test” 2TB (Прошивка: моя кастомная)
  • Драйвер чипсета Intel Z790: 10.1.19376.8374.
  • Windows: индексирование отключено, чтобы исключить его влияние на результаты теста.
  • Windows: обновления отключены для избежания влияния на результаты теста.
  • Windows: для большинства приложений Windows отключено фоновое выполнение.
  • Загрузка Windows: чистый образ только с драйверами.
  • Тестирование pSLC Cache: SSD охлаждается вентиляторами для предотвращения троттлинга из-за перегрева, который бы повлиял на результаты тестирования.
  • Windows: антивирус отключён для минимизации варьирования результатов между итерациями теста.
  • Тестируемый SSD: используется в качестве дополнительного накопителя; тесты выполняются сначала при задействовании 0% ёмкости, а затем в целях имитации реалистичного сценария — при задействовании 50% ёмкости.
  • Quarch PPM QTL1999 — тест потребления питания. Определяет три показателя — в простое, когда накопитель используется в качестве вторичного, при максимальной нагрузке в течение часа активного использования и среднее потребление на основе этих величин.

▍ CRYSTALDISKMARK


Мы выполнили синтетические тесты последовательных и случайных операций чтения/записи на следующих конфигурациях:

  • Последовательные: 2x 1 ГиБ (блоки 1 МиБ), глубина очереди 8, 1 поток
  • Случайные: 2x 1 ГиБ (блоки по 4 КиБ), глубина очереди 1, 1/2/4/8/16 потоков


В последовательных сценариях разницы практически нет, поскольку даже с pSLC Cache наш SSD уже достигает своей максимальной пропускной способности и установленных производителем скоростей. Плюс это всё же быстрый тест, в более обширном и тяжёлом бенчмарке мы увидим уже ощутимую разницу.


В плане задержки наблюдается значительное падение, поскольку, когда SSD находится в простое, его микросхемы NAND при начале записи или чтения работают в штатном режиме, которым является QLC, и пока они не будут перепрограммированы в SLC, будет присутствовать определённая задержка. Если же SSD находится полностью в режиме pSLC, эта задержка значительно снижается, так как находится он в нём постоянно.


То же самое происходит и со скоростью случайной записи: в этих тестах мы наблюдаем более значительную разницу по сравнению со скоростью последовательных операций, в которых отличие было ничтожным.


Это же происходит в QD1; мы видим, что при чтении SSD демонстрирует прирост скорости в 16%, а при записи — намного больший прирост, превышающий 30%.

▍ ATTO Disk Benchmark QD1 и QD4


Мы провели тестирование с помощью ATTO, чтобы пронаблюдать скорость SSD при различных размерах блоков. В этом бенчмарке конфигурация была следующей:

  • Размер блоков: от 512 байт до 8 МиБ;
  • Размер файла: 256 МБ;
  • Глубина очереди: 1 и 4.


ATTO Disk Benchmark — это программа, тестирующая последовательные операции записи/чтения сжатых файлов. В связи с этим при моделировании работы в условиях передачи файлов, как в Windows, мы преимущественно наблюдаем размер блоков от 128 КБ до 1 МБ. Сейчас мы наблюдаем, что SSD в режиме pSLC превосходит SSD в штатной конфигурации при всех размерах блоков, что снова впечатляет.


Тот же паттерн повторяется при глубине очереди 1, хотя разница в размере некоторых блоков в сравнении с глубиной 4 оказалась меньше.

▍ 3DMark — Storage Benchmark



Этот бенчмарк состоит из выполнения различных связанных с хранилищем тестов, включая загрузку игр вроде Call of Duty Black Ops 4, Overwatch, запись и потоковую передачу геймплея через OBS при 1080p 60 FPS, установку игр и копирование их файлов.



Этот набор тестов, сосредоточенный на типичных вариантах использования, демонстрирует, что даже в таких приближённых к реальности сценариях присутствует заметная разница в производительности, особенно по части задержки. Хотя в подобных «облегчённых» сценариях это может быть не очень заметно.

▍ PCMARK 10 — полный бенчмарк системных дисков


В этом тесте инструмент Storage Test использовался совместно с Full System Drive Benchmark, который проверяет SSD с помощью лёгких и тяжёлых тестов.


Среди них:

  • Загрузка Windows 10;
  • Adobe After Effects: запуск приложения до момента его готовности к работе;
  • Adobe Illustrator: запуск приложения до момента его готовности к работе;
  • Adobe Premiere Pro: запуск приложения до момента его готовности к работе;
  • Adobe Lightroom: запуск приложения до момента готовности к работе;
  • Adobe Photoshop: запуск приложения до момента готовности к работе;
  • Battlefield V: время загрузки до начального меню;
  • Call of Duty Black Ops 4: время загрузки до начального меню;
  • Overwatch: время загрузки до начального меню;
  • Использование Adobe After Effects;
  • Использование Microsoft Excel;
  • Использование Adobe Illustrator;
  • Использование Adobe InDesign;
  • Использование Microsoft PowerPoint;
  • Использование Adobe Photoshop (интенсивное);
  • Использование Adobe Photoshop (лёгкое)
  • Копирование 4 файлов ISO общим объёмом 20 ГБ на дополнительный накопитель (тест записи);
  • Копирование файлов ISO (тест чтения-записи);
  • Копирование файла ISO на дополнительный накопитель (чтение);
  • Копирование 339 файлов JPEG (фото) на тестируемый накопитель (запись);
  • Создание копий этих файлов JPEG (чтение-запись);
  • Копирование 339 файлов JPEG (фото) на другой накопитель (чтение).


В этом сценарии, представляющем практический бенчмарк с чуть большим акцентом на записи по сравнению с 3DMark, можно заметить фактическую разницу при типичном повседневном использовании, которая оказалась кардинальной, практически двойной.

▍ Adobe Premiere Pro 2021


Далее мы измерили, сколько времени потребуется Adobe Premiere, чтобы открыть проект размером около 16,5 ГБ — с разрешением видео 4К, битрейтом 120 Мб/с и множеством эффектов — до момента его готовности для редактирования. Стоит отметить, что тестируемый SSD всегда использовался как дополнительный накопитель без операционной системы, поскольку иначе это могло повлиять на результаты, вызвав непоследовательные показатели.


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

▍ Время загрузки Windows и игр


Мы сравнили работу SSD с pSLC Cache и в режиме pSLC, используя бенчмарк Final Fantasy XIV.


Время загрузки игры получается одинаковым, поскольку ограничителем здесь выступает её API, который отличается от DirectStorage. Этот API не оптимизирован в достаточной степени, чтобы мы могли заметить ощутимую разницу.


То же самое можно сказать про Windows 11, поскольку, хоть это и новая система, она не может задействовать те возможности, которые мы применили к SSD.

▍ SLC Caching


Во многих современных SSD используется технология SLC Caching, при которой определённый процент хранилища накопителя, будь то MLC (2 бита на ячейку), TLC (3 бита на ячейку) или QLC (4 бита на ячейку), используется для хранения только 1 бита на ячейку. В данном случае эта часть служит буфером чтения/записи, в котором контроллер начинает запись, а когда буфер опустошается, он начинает писать во внутреннюю флэш-память (MLC/TLC/QLC).



С помощью IOmeter можно получить представление об объёме кэша SLC нашего SSD, поскольку производители редко предоставляют эту информацию. Исходя из проведённых тестов, мы выяснили, что объём этого кэша динамический и относительно небольшой, а именно 45 ГБ. Накопителю удалось поддерживать среднюю скорость в районе 493 МБ/с до опустошения буфера, что можно считать хорошим показателем для SATA SSD.

Тем не менее после записи 45 ГБ начинается процесс свёртывания (folding), поскольку SSD выделил всё своё пространство, доступное для работы в качестве pSLC. Вот здесь-то и обнаруживается истинная Ахиллесова пята SSD на основе QLC. Далее скорость устойчиво держалась на достаточно низком уровне в районе 50 МБ/с.


Теперь, когда мы преобразуем этот SSD в pSLC, то видим, что он записывает весь свой объём 120 ГБ при средней скорости в 498 МБ/с. Чтобы дополнительно в этом убедиться, мы записали на него 500 ГБ — и даже в этом случае он перезаписал своё хранилище более 4 раз при почти 500 МБ/с.


Как видно по графику выше, мы усреднили скорость записи, объединив её показатели в режиме pSLC Cache, при свёртывании и в штатном состоянии. Очевидно, что разница оказалась кардинальной, практически 10-кратной.

▍ Тест копирования файлов


В этом тесте файлы ISO и CS:GO копировались с RAM Disk на SSD. Использовалась система Windows 10 21H1, ISO размером 6,25 ГБ (1 файл) и установочный каталог CS:GO размером 25,2 ГБ.


В более реалистичном тесте вроде этого разницы не наблюдается, поскольку базовый объём кэша SLC больше размера тестируемого файла.


И даже более крупный каталог оказывается меньше размера кэша. Я не провожу тестов с более массивными файлами, потому что использую RAM Disk, и всё упирается в объём доступного RAM, который в моей системе составляет 32 ГБ.

▍ Тест нагрева


В этом разделе мы пронаблюдаем температуру SSD во время стресс-теста, когда он непрерывно получает файлы. Нашей целью будет определить, возникнет ли температурный троттлинг внутренних компонентов, который может создать узкое место или вызвать падение быстродействия.


SSD даже не нагревается, поскольку это модель с низким энергопотреблением, о чём нам сообщит следующий анализ, и я считаю, что показания сняты именно с датчика NAND Flash.

▍ Потребление энергии и эффективность


SSD, как и многие другие компоненты в нашей системе, потребляют определённое количество энергии. Самые эффективные могут выполнять задачи быстро при относительно низком потреблении, скорее возвращаясь в состояние простоя, в котором энергии им требуется минимум.


В этом разделе для выполнения тестов и определения эффективности нашего SSD мы используем Quarch Programmable Power Module (программируемый модуль питания), предоставленный компанией Quarch Solutions. Эта методика подразумевает проведение трёх тестов: измерение максимального потребления энергии, вычисление среднего потребления энергии в практических сценариях, а также измерение её потребления в периоды простоя.

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


Тесты показывают, что наша модификация значительно повысила эффективность накопителя. Подтверждается это тем, что вопреки невысокому энергопотреблению, на которое укажет следующий тест, скорость в МБ/с была очень высока.

Поскольку бенчмарк существенно превысил объём кэша в 45 ГБ, приличную часть времени он выполнялся при низкой скорости менее 55 МБ/с, что привело к низкой эффективности. В режиме pSLC он смог записать вдвое больше своего объёма и продемонстрировал даже меньшее энергопотребление, чем в режиме QLC. При этом его пропускная способность не падала. Всё это привело к значительной разнице в энергопотреблении.


Несмотря на то что для этого SSD изначально характерен низкий аппетит, при переводе в режим pSLC мы наблюдаем ещё большее его снижение. Так происходит, поскольку NAND-память на основе SLC имеет всего два логических уровня, в связи с чем пороговое напряжение, необходимое для протекания электронов в канал затвора каждой ячейки, меньше. И напротив, NAND-память типа QLC имеет 16 логических уровней, а значит, требует более высокого порогового напряжения. Это и объясняет разницу в потреблении энергии.


То же самое мы видим в среднем показателе для обоих SSD.


И последнее, но не менее важное — тест в простое. Он показывает сценарий, в котором функционирует подавляющее большинство SSD при обычном использовании. Здесь мы видим, что энергопотребление оказалось ещё более низким. Тоже положительный момент.

▍ Какие из всего этого можно сделать выводы?


Ещё раз подчеркну важность осторожности при выполнении этой процедуры, так как при малейших ошибках она реально может навредить. Тем не менее мы видим, что в некоторых сценариях достигается значительная разница. Ну а в плане срока службы разница огромна!

Telegram-канал со скидками, розыгрышами призов и новостями IT 💻
Tags:
Hubs:
Total votes 101: ↑99 and ↓2+126
Comments85

Articles

Information

Website
ruvds.com
Registered
Founded
Employees
11–30 employees
Location
Россия
Representative
ruvds