Мы уже видели, как собрать комплект с металлическим корпусом NanoPi M4V2, который предлагает решение Arm mini PC с поддержкой SSD NVMe. Новый NanoPi M4V2 Rockchip RK3399 SBC представляет собой обновленную плату M4, которая обеспечивает более быструю память LPDDR4 и добавляет кнопки питания и восстановления.
Поскольку мы уже протестировали несколько SBC на базе RK3399 и телевизионных приставок, мы планировали остановиться в этом обзоре на оценке теплового дизайна (т.е. посмотреть, насколько хорошо плата охлаждается) и посмотреть, как пропускная способность памяти изменилась с LPDDR3 до LPDDR4.
Нам хотелось сделать это как с Linux, так и с Android, чтобы затем сравнивать полученные результаты с тестами NanoPC-T4 (LPDDR3) в Android. Но для этого требуется флэш-модуль eMMC, а у нас его нет. Мы хотели запустить Armbian из-за поддержки armbian-monitor, но он пока не работает, поэтому нам пришлось провести все тесты с FriendlyCore Desktop (rk3399-sd-friendlydesktop-bionic-4.4-arm64-20190926 .img) на базе Ubuntu 18.04.
Системная информация
Среда рабочего стола будет автоматически входить в систему, но если вы хотите войти через SSH, вы можете использовать имя пользователя root и пароль fa . Несколько подробностей о системе:
root@NanoPi-M4v2:~# uname -a
Linux NanoPi-M4v2 4.4.179 #1 SMP Thu Aug 29 17:08:23 CST 2019 aarch64 aarch64 aarch64 GNU/Linux
root@NanoPi-M4v2:~# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.2 LTS"
root@NanoPi-M4v2:~# df -h
Filesystem Size Used Avail Use% Mounted on
udev 1.9G 0 1.9G 0% /dev
tmpfs 385M 1.1M 384M 1% /run
overlay 24G 761M 23G 4% /
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
tmpfs 385M 12K 385M 1% /run/user/1000
/dev/sda4 200G 174G 24G 89% /media/pi/USB3_BTRFS
/dev/sda3 245G 163G 82G 67% /media/pi/USB3_EXFAT
/dev/sda2 241G 181G 48G 80% /media/pi/USB3_EXT4
/dev/sda1 245G 182G 63G 75% /media/pi/USB3_NTFS
/dev/mmcblk0p2 24G 761M 23G 4% /media/pi/userdata
tmpfs 385M 0 385M 0% /run/user/0
root@NanoPi-M4v2:~# free -h
total used free shared buff/cache available
Mem: 3.8G 260M 2.3G 17M 1.2G 3.3G
Swap: 0B 0B 0B
Примечание. Мы также подключили свое тестовое оборудование USB 3.0, которое объясняет четыре раздела /dev/sda1..4.
Загруженные модули:
root@NanoPi-M4v2:~# lsmod
Module Size Used by
btrfs 995328 1
xor 20480 1 btrfs
raid6_pq 102400 1 btrfs
joydev 20480 0
sg 40960 0
bcmdhd 1314816 0
binfmt_misc 20480 1
uio_pdrv_genirq 16384 0
uio 20480 1 uio_pdrv_genirq
sch_fq_codel 20480 3
bnep 24576 2
ip_tables 28672 0
x_tables 36864 1 ip_tables
GPIO, кажется, правильно настроены:
root@NanoPi-M4v2:~# ls /sys/class/gpio/
export gpiochip0 gpiochip128 gpiochip32 gpiochip64 gpiochip96 unexport
root@NanoPi-M4v2:~# cat /sys/kernel/debug/gpio
GPIOs 0-31, platform/pinctrl, gpio0:
gpio-1 ( |vcc_sd ) out hi
gpio-4 ( |bt_default_wake_host) in hi
gpio-5 ( |GPIO Key Power ) in hi
gpio-9 ( |bt_default_reset ) out hi
gpio-10 ( |reset ) out hi
gpio-13 ( |? ) out lo
GPIOs 32-63, platform/pinctrl, gpio1:
gpio-34 ( |int-n ) in hi
gpio-46 ( |vsel ) out lo
gpio-49 ( |vsel ) out lo
GPIOs 64-95, platform/pinctrl, gpio2:
gpio-83 ( |bt_default_rts ) out lo
gpio-90 ( |bt_default_wake ) out hi
GPIOs 96-127, platform/pinctrl, gpio3:
gpio-111 ( |mdio-reset ) out hi
GPIOs 128-159, platform/pinctrl, gpio4:
gpio-154 ( |vbus-5v ) out lo
gpio-157 ( |enable ) out lo
gpio-158 ( |vcc_lcd ) out lo
SBC Bench
Сценарий SBC Bench отлично подходит для тестирования Arm SBC и проверки того, происходит ли замедление CPU при различных рабочих нагрузках, поэтому давайте установим его:
wget https://raw.githubusercontent.com/ThomasKaiser/sbc-bench/master/sbc-bench.sh
chmod +x sbc-bench.sh
root@NanoPi-M4v2:~# ./sbc-bench.sh -m
Time big.LITTLE load %cpu %sys %usr %nice %io %irq Temp
07:48:27: 1008/1416MHz 0.08 1% 0% 0% 0% 0% 0% 51.7°C
Система сообщает, что температура процессора составляет 51,7 ° C на холостом ходу, по нашим измерениям около 41 ° C в верхней части корпуса с помощью ИК-термометра. Температура окружающей среды была около 28-29 ° С. Обратите внимание, что у нас нет SSM-накопителей NVMe, и если вы используете один из них, температура может быть немного выше. Есть вентилятор, который будет вращаться только тогда, когда температура поднимется еще больше, и когда он действительно будет шумным, его слышно даже в другой комнате (если дверь открыта) примерно в 6 метрах от платы.
Время запустить тесты. Это займет некоторое время.
./sbc-bench.sh -c
sbc-bench v0.6.9
Installing needed tools. This may take some time... Done.
Checking cpufreq OPP... Done.
Executing tinymembench. This will take a long time... Done.
Executing OpenSSL benchmark. This will take 3 minutes... Done.
Executing 7-zip benchmark. This will take a long time... Done.
Executing cpuminer. This will take 5 minutes... Done.
Checking cpufreq OPP... Done.
ATTENTION: Throttling might have occured on CPUs 0-3. Check the log for details.
ATTENTION: Throttling might have occured on CPUs 4-5. Check the log for details.
Memory performance (big.LITTLE cores measured individually):
memcpy: 1302.1 MB/s (0.5%)
memset: 4654.9 MB/s (0.4%)
memcpy: 2613.9 MB/s (0.7%)
memset: 4758.7 MB/s (0.8%)
Cpuminer total scores (5 minutes execution): 7.82,7.76,7.75,7.73,7.71,7.70,7.69,7.64,7.63,7.62,7.61,7.60,7.57,7.56,7.54,7.53,7.51,7.49,7.48,7.46,7.45,7.44,7.42,7.41,7.40,7.37,7.36,7.34,7.32,7.29,7.28,7.26,7.25,7.24,7.23,7.22,7.21,7.20,7.19,7.18,7.17 kH/s
7-zip total scores (3 consecutive runs): 5875,5492,5560
OpenSSL results (big.LITTLE cores measured individually):
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
aes-128-cbc 124065.11k 368155.37k 705491.20k 947014.31k 1052090.37k 1058908.84k
aes-128-cbc 358389.56k 807787.75k 1159997.95k 1278035.63k 1345746.26k 1347988.14k
aes-192-cbc 118232.62k 327556.91k 576749.91k 730951.34k 791800.49k 795858.26k
aes-192-cbc 337263.40k 739913.49k 980548.69k 1132787.71k 1185980.42k 1185147.56k
aes-256-cbc 114553.00k 300478.08k 499657.81k 611518.12k 653445.80k 654939.48k
aes-256-cbc 325593.91k 660635.97k 904857.86k 977412.78k 1017637.55k 1018451.29k
Full results uploaded to http://ix.io/1ZWO. Please check the log for anomalies (e.g. swapping
or throttling happenend) and otherwise share this URL.
Мы также запустили ./sbc-bench -m в отдельном окне, чтобы чаще отслеживать температуру, и температура процессора поднялась до 71,1 °C. Верхняя часть корпуса была только немного теплее 42 °C.
Дросселирование процессора
Нет проблем с одноядерным тестом, но мы можем увидеть небольшое ограничение для многопоточного теста 7zip:
System health while running 7-zip multi core benchmark:
Time big.LITTLE load %cpu %sys %usr %nice %io %irq Temp
09:47:58: 1800/1416MHz 4.60 3% 0% 2% 0% 0% 0% 59.4°C
09:48:19: 1800/1416MHz 5.06 79% 1% 77% 0% 0% 0% 67.8°C
09:48:40: 1800/1416MHz 5.18 77% 1% 76% 0% 0% 0% 66.7°C
09:49:00: 1800/1416MHz 5.76 90% 1% 88% 0% 0% 0% 69.4°C
09:49:20: 1800/1416MHz 5.52 73% 1% 72% 0% 0% 0% 67.8°C
09:49:40: 1800/1416MHz 5.51 84% 1% 82% 0% 0% 0% 69.4°C
09:50:00: 1800/1416MHz 5.80 78% 1% 76% 0% 0% 0% 69.4°C
09:50:21: 1008/1416MHz 6.21 92% 1% 90% 0% 0% 0% 70.6°C
09:50:44: 1800/1416MHz 5.92 78% 1% 76% 0% 0% 0% 70.0°C
09:51:05: 1800/1416MHz 5.88 81% 1% 79% 0% 0% 0% 67.2°C
09:51:25: 1800/1416MHz 5.90 87% 2% 85% 0% 0% 0% 70.0°C
но это случается гораздо чаще с cpuminer:
System health while running cpuminer:
Time big.LITTLE load %cpu %sys %usr %nice %io %irq Temp
09:51:38: 600/1200MHz 5.77 4% 0% 3% 0% 0% 0% 68.9°C
09:52:02: 1800/1200MHz 5.96 100% 1% 98% 0% 0% 0% 68.9°C
09:52:26: 1008/1200MHz 6.03 100% 1% 98% 0% 0% 0% 70.6°C
09:52:50: 600/1200MHz 6.02 100% 1% 98% 0% 0% 0% 69.4°C
09:53:14: 1800/1200MHz 6.15 100% 1% 98% 0% 0% 0% 68.3°C
09:53:38: 1800/1008MHz 6.23 100% 1% 98% 0% 0% 0% 68.9°C
09:54:02: 408/1416MHz 6.21 100% 1% 98% 0% 0% 0% 70.6°C
09:54:26: 600/1416MHz 6.19 100% 1% 98% 0% 0% 0% 69.4°C
09:54:50: 1800/1416MHz 6.21 100% 1% 98% 0% 0% 0% 68.9°C
09:55:14: 600/1416MHz 6.15 100% 1% 98% 0% 0% 0% 68.3°C
09:55:38: 600/1416MHz 6.29 100% 1% 98% 0% 0% 0% 70.0°C
09:56:03: 600/1008MHz 6.24 100% 1% 98% 0% 0% 0% 70.0°C
09:56:28: 1800/1008MHz 6.22 100% 1% 98% 0% 0% 0% 71.1°C
Похоже, что система снизит тактовую частоту больших ядер примерно до 600 МГц, когда температура процессора превысит 70 °C.
Пропускная способность памяти
Результаты NanoPi M4 для больших ядер (2x Arm Cortex-A72) взяты из базы данных результатов SBC-Bench:
- memcpy: 4080 МБ/с
- memset: 8270 МБ/с
Итак, теперь у нас есть проблемы с программным обеспечением/конфигурацией, поскольку NanoPi M4V2 с предположительно более быстрой памятью на самом деле намного медленнее:
- memcpy: 2613,9 МБ/с
- memset: 4758,7 МБ/с
M4V2 работает под управлением Ubuntu 18.04 64-бит с Linux 4.4, а плата M4 была протестирована с Debian Stretch 64-бит и Linux 4.19. Вот справочный журнал загрузки ядра но мы ничего не видим в ddr.
Улучшение воздушного потока
По конструкции корпуса вентилятор обращен к рабочему столу, а корпус лишь слегка приподнят с помощью резиновых подушек. Один из способов улучшить охлаждение — перевернуть корпус так, чтобы вентилятор был направлен вверх, но, вместо этого, мы приподняли корпус с четырьмя заглушками для разъемов HDMI.
Давайте повторим тест:
./sbc-bench.sh -c
Average load is 0.1 or higher (way too much background activity). Waiting...
System too busy for benchmarking: 13:22:38 up 8:29, 5 users, load average: 0.11, 1.08, 2.41
System too busy for benchmarking: 13:22:43 up 8:29, 5 users, load average: 0.10, 1.06, 2.39
sbc-bench v0.6.9
Installing needed tools. This may take some time... Done.
Checking cpufreq OPP... Done.
Executing tinymembench. This will take a long time... Done.
Executing OpenSSL benchmark. This will take 3 minutes... Done.
Executing 7-zip benchmark. This will take a long time... Done.
Executing cpuminer. This will take 5 minutes... Done.
Checking cpufreq OPP... Done.
ATTENTION: Throttling might have occured on CPUs 0-3. Check the log for details.
ATTENTION: Throttling might have occured on CPUs 4-5. Check the log for details.
Memory performance (big.LITTLE cores measured individually):
memcpy: 1336.6 MB/s (0.6%)
memset: 4675.6 MB/s
memcpy: 2594.7 MB/s (0.9%)
memset: 4790.5 MB/s (0.6%)
Cpuminer total scores (5 minutes execution): 9.51,9.42,8.89,8.72,8.63,8.59,8.58,8.53,8.52,8.48,8.47,8.44,8.43,8.42,8.40,8.39,8.38,8.37,8.36,8.34,8.29,8.28,8.26,8.23,8.22,8.21,8.19,8.18,8.17,8.16,8.15,8.14,8.12,8.11,8.10,8.09 kH/s
7-zip total scores (3 consecutive runs): 6097,6091,6131
OpenSSL results (big.LITTLE cores measured individually):
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
aes-128-cbc 124053.61k 368255.06k 706825.39k 947712.34k 1052890.45k 1058805.08k
aes-128-cbc 358191.40k 807757.33k 1160006.83k 1282757.29k 1342816.26k 1348059.14k
aes-192-cbc 118253.40k 326713.71k 577089.45k 730836.31k 792005.29k 796027.56k
aes-192-cbc 337222.84k 739990.25k 984173.23k 1131525.12k 1186556.59k 1189811.54k
aes-256-cbc 114629.87k 301376.96k 499779.24k 611570.69k 653781.67k 655742.29k
aes-256-cbc 325630.63k 670746.20k 904601.77k 977996.46k 1017951.57k 1013841.92k
Full results uploaded to http://ix.io/1ZYx. Please check the log for anomalies (e.g. swapping
or throttling happenend) and otherwise share this URL.
К сожалению, дросселирование по-прежнему происходило, но все же есть некоторые улучшения — этого не произошло с 7-zip вообще (температура на 4 °C ниже), и происходило реже с cpuminer:
System health while running 7-zip multi core benchmark:
Time big.LITTLE load %cpu %sys %usr %nice %io %irq Temp
14:02:16: 1800/1416MHz 4.64 7% 0% 7% 0% 0% 0% 55.0°C
14:02:37: 1800/1416MHz 4.89 77% 0% 76% 0% 0% 0% 64.4°C
14:02:57: 1800/1416MHz 4.55 75% 1% 74% 0% 0% 0% 59.4°C
14:03:17: 1800/1416MHz 4.89 91% 1% 90% 0% 0% 0% 62.5°C
14:03:37: 1800/1416MHz 4.54 70% 0% 69% 0% 0% 0% 63.8°C
14:03:58: 1800/1416MHz 4.64 82% 1% 80% 0% 0% 0% 62.5°C
14:04:18: 1800/1416MHz 4.61 77% 1% 75% 0% 0% 0% 63.1°C
14:04:38: 1800/1416MHz 4.68 81% 1% 80% 0% 0% 0% 63.8°C
14:04:58: 1800/1416MHz 4.81 82% 1% 81% 0% 0% 0% 65.0°C
14:05:18: 1800/1416MHz 5.06 79% 1% 78% 0% 0% 0% 63.1°C
14:05:41: 1800/1416MHz 5.39 86% 1% 84% 0% 0% 0% 66.1°C
System health while running cpuminer:
Time big.LITTLE load %cpu %sys %usr %nice %io %irq Temp
14:05:45: 1800/1416MHz 5.52 8% 0% 7% 0% 0% 0% 68.3°C
14:06:08: 1800/1416MHz 5.89 100% 0% 99% 0% 0% 0% 67.8°C
14:06:31: 1800/1416MHz 5.92 100% 0% 99% 0% 0% 0% 68.9°C
14:06:53: 1800/1416MHz 6.06 100% 0% 99% 0% 0% 0% 68.9°C
14:07:16: 1800/1416MHz 6.04 100% 0% 99% 0% 0% 0% 69.4°C
14:07:39: 1800/1416MHz 6.09 100% 0% 99% 0% 0% 0% 68.9°C
14:08:02: 1800/1416MHz 6.06 100% 0% 99% 0% 0% 0% 70.0°C
14:08:25: 1800/1416MHz 6.10 100% 0% 99% 0% 0% 0% 70.0°C
14:08:48: 1800/1416MHz 6.19 100% 0% 99% 0% 0% 0% 69.4°C
14:09:12: 1800/1416MHz 6.14 100% 0% 99% 0% 0% 0% 67.2°C
14:09:35: 1800/ 600MHz 6.15 100% 0% 99% 0% 0% 0% 68.9°C
14:09:59: 408/ 600MHz 6.15 100% 0% 99% 0% 0% 0% 70.0°C
14:10:22: 1800/1416MHz 6.11 100% 0% 99% 0% 0% 0% 70.0°C
Ускорение GPU и аппаратное декодирование VPU
FriendlyCore поставляется с набором предустановленных программ, включая те, которые позволяют нам проверить, работают ли ускорение 3D-графики и аппаратное декодирование видео.
glmark2-es2 предустановлен и работает нормально…
Но, показатель glmark2 находится на низком уровне — 54. Насколько мы понимаем, vsync включен, поэтому максимальный показатель составляет 60 кадров в секунду:
pi@NanoPi-M4v2:~$ glmark2-es2
=======================================================
glmark2 2014.03+git20150611.fa71af2d
=======================================================
OpenGL Information
GL_VENDOR: ARM
GL_RENDERER: Mali-T860
GL_VERSION: OpenGL ES 3.2 v1.r14p0-01rel0-git(966ed26).f44c85cb3d2ceb87e8be88e7592755c3
=======================================================
[build] use-vbo=false: FPS: 50 FrameTime: 20.000 ms
[build] use-vbo=true: FPS: 47 FrameTime: 21.277 ms
[texture] texture-filter=nearest: FPS: 60 FrameTime: 16.667 ms
[texture] texture-filter=linear: FPS: 60 FrameTime: 16.667 ms
[texture] texture-filter=mipmap: FPS: 60 FrameTime: 16.667 ms
[shading] shading=gouraud: FPS: 59 FrameTime: 16.949 ms
[shading] shading=blinn-phong-inf: FPS: 60 FrameTime: 16.667 ms
[shading] shading=phong: FPS: 60 FrameTime: 16.667 ms
[shading] shading=cel: FPS: 60 FrameTime: 16.667 ms
[bump] bump-render=high-poly: FPS: 60 FrameTime: 16.667 ms
[bump] bump-render=normals: FPS: 60 FrameTime: 16.667 ms
[bump] bump-render=height: FPS: 60 FrameTime: 16.667 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 59 FrameTime: 16.949 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 60 FrameTime: 16.667 ms
[pulsar] light=false:quads=5:texture=false: FPS: 60 FrameTime: 16.667 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 60 FrameTime: 16.667 ms
[desktop] effect=shadow:windows=4: FPS: 60 FrameTime: 16.667 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 30 FrameTime: 33.333 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 30 FrameTime: 33.333 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 30 FrameTime: 33.333 ms
[ideas] speed=duration: FPS: 59 FrameTime: 16.949 ms
[jellyfish] <default>: FPS: 59 FrameTime: 16.949 ms
[terrain] <default>: FPS: 27 FrameTime: 37.037 ms
[shadow] <default>: FPS: 57 FrameTime: 17.544 ms
[refract] <default>: FPS: 32 FrameTime: 31.250 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 60 FrameTime: 16.667 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 60 FrameTime: 16.667 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 60 FrameTime: 16.667 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 60 FrameTime: 16.667 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 60 FrameTime: 16.667 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 59 FrameTime: 16.949 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 60 FrameTime: 16.667 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 60 FrameTime: 16.667 ms
=======================================================
glmark2 Score: 54
=======================================================
Мы протестировали воспроизведение видео 4K в FriendlyELEC Player. Видео H.265, H.264 и VP9 воспроизводится с аппаратным декодированием видео.
Однако файлы .ts не будут воспроизводиться вообще, и поэтому мы не смогли воспроизвести ни 10-битные H.264, ни 10-битные H.265 4K-видео, так как все наши образцы основаны на формате TS. Нам также не удалось изменить разрешение экрана с 1920 × 1080 до 4K, например, 3840 × 2160 или 4196 × 2160, поскольку они просто не были обнаружены, несмотря на подключение к телевизору 4K.
Разработка и демонстрации Qt
Мы не могли не заметить демонстрации Qt на рабочем столе. Была также демонстрация OpenCV, но для этого требуется камера USB или MIPI, и мы не смогли найти свою веб-камеру USB.
Демонстрации Qt5 QML включают в себя браузер изображений и умный пользовательский интерфейс. Если вы хотите легко приступить к разработке Qt UI на Arm, FriendlyELEC имеет раздел «Разработка приложений Qt» в своей вики, поэтому NanoPI M4/M4V2 может быть хорошей отправной точкой. У них также есть несколько репозиториев Qt с демонстрациями в их аккаунте GitHub.
Заключительные слова
Комплект из металлического корпуса NanoPi M4V2 позволяет в большинстве случаев поддерживать плату Rockchip RK3399 достаточно прохладной. Но, вы должны знать, что вентилятор действительно шумит, когда он запускается, и мы не тестировали комплект с твердотельным накопителем NVMe, который может дополнительно генерировать тепло.
Если вы планируете использовать Android, вам необходимо приобрести дополнительный флэш-модуль eMMC, для тестирования FriendlyCore Desktop, как представлено выше, подойдет и карта MicroSD. Мы использовали карту памяти MicroSD класса А1 емкостью 32 ГБ и производительность была удовлетворительной. Программное обеспечение выглядит довольно надежным и должно стать хорошей основой для разработки продукта. Для повышения производительности могут потребоваться дополнительные настройки, поскольку мы обнаружили, что пропускная способность памяти составляет около половины от то, которая отмечена у плат с памятью DDR3.
Если вы хотите приобрести оборудование, используемое для этого обзора, вы можете сделать это за 98 долларов плюс доставка. Обязательно выберите также «Металлический корпус с охлаждающим вентилятором (включая адаптер NVMe SSD) (+ 28,00 долларов)».
Выражаем свою благодарность источнику из которого взята и переведена статья, сайту cnx-software.com.
Оригинал статьи вы можете прочитать здесь.