Всем привет!
Неделя конечно выдалась очень интересной – сразу три хостинг провайдера выкатили на бета-тест свои новые облачные решения. Провайдер Online.net решил не мелочиться и вообще выдать полную халяву на время бета-тестов, правда для того чтобы зарегаться на labs.online.net нужно сперва получить инвайт.
Как оказалось это дело 5 минут – надо всего то сходить в irc.online.net на канал #onlinelabs и запросить его там.
Итак, мы внутри
Тут нас встречает довольно симпатичный современный интерфейс управления услугами. По ссылке «Storage» нас встречает минималистичный интерфейс управления контейнерами s3, а верхний блок меню полностью посвящен управлению инстансами. Тут можно привязывать/отвязывать диски, управлять своими образами, рулить сетью и конечно же создавать новые инстансы.
Вообще Online.net позиционирует свое облако как попытку отказа от виртуальных серверов в пользу «физического облака». Регион для старта инстансов пока только один – Париж.
Перед созданием инстансов вас попросят добавить свой публичный ssh-ключ для авторизации. Затем встретит вот такой интересный интерфейс:
Как мы видим кол-во готовых образов всего два – Ubuntu 14.04 и Gentoo, но зато есть возможность прикручивания дополнительных логических томов. По умолчанию предлагается поставить систему на раздел в 20Gb SSD, а для данных добавить 100Gb раздел на обычном HDD.
Кстати говоря мягко говоря небольшой набор образов вероятно связан с тем что инстансы в этом облаке на процессорах ARMv7.
Чуть ниже я разберу этот момент более подробно.
Посмотрим что тут за железо
Для тестов я запустил инстанс с Ubuntu Trusty (14.04).
По умолчанию нам выдают инстансы вот с такой конфигурацией:
System: Host: c1-10-1-4-113 Kernel: 3.17.0-66 armv7l (32 bit) Console: tty 0 Distro: Ubuntu 14.04 trusty Machine: No /sys/class/dmi, using dmidecode: no machine data available CPU: Quad core ARMv7 rev 2 (v7l) (-MCP-) clocked at MHz Graphics: Card: Failed to Detect Video Card! X-Vendor: N/A driver: N/A tty size: 134x20 Advanced Data: N/A for root out of X Network: Card: Failed to Detect Network Card! Drives: HDD Total Size: NA (-) Info: Processes: 67 Uptime: 28 min Memory: 36.2/2020.7MB Runlevel: 2 Client: Shell (bash) inxi: 1.9.17
Чуть более подробно о процессоре:
root@c1-10-1-4-113:~# cat /proc/cpuinfo processor : 0 model name : ARMv7 Processor rev 2 (v7l) Features : half thumb fastmult vfp edsp thumbee vfpv3 tls idiva idivt vfpd32 lpae CPU implementer : 0x56 CPU architecture: 7 CPU variant : 0x2 CPU part : 0x584 CPU revision : 2 processor : 1 model name : ARMv7 Processor rev 2 (v7l) Features : half thumb fastmult vfp edsp thumbee vfpv3 tls idiva idivt vfpd32 lpae CPU implementer : 0x56 CPU architecture: 7 CPU variant : 0x2 CPU part : 0x584 CPU revision : 2 processor : 2 model name : ARMv7 Processor rev 2 (v7l) Features : half thumb fastmult vfp edsp thumbee vfpv3 tls idiva idivt vfpd32 lpae CPU implementer : 0x56 CPU architecture: 7 CPU variant : 0x2 CPU part : 0x584 CPU revision : 2 processor : 3 model name : ARMv7 Processor rev 2 (v7l) Features : half thumb fastmult vfp edsp thumbee vfpv3 tls idiva idivt vfpd32 lpae CPU implementer : 0x56 CPU architecture: 7 CPU variant : 0x2 CPU part : 0x584 CPU revision : 2 Hardware : Marvell Armada 370/XP (Device Tree) Revision : 0000 Serial : 0000000000000000
Процессор компании Marvell, о нем можно почитать на официальном сайте – http://www.marvell.com/embedded-processors/armada-xp/
ОЗУ:
root@c1-10-1-4-113:~# cat /proc/meminfo MemTotal: 2069156 kB MemFree: 1888324 kB MemAvailable: 1855908 kB Buffers: 4676 kB Cached: 147500 kB SwapCached: 0 kB Active: 70528 kB Inactive: 88808 kB Active(anon): 7196 kB Inactive(anon): 48 kB Active(file): 63332 kB Inactive(file): 88760 kB Unevictable: 0 kB Mlocked: 0 kB HighTotal: 1318908 kB HighFree: 1217848 kB LowTotal: 750248 kB LowFree: 670476 kB SwapTotal: 0 kB SwapFree: 0 kB Dirty: 4 kB Writeback: 0 kB AnonPages: 7192 kB Mapped: 7692 kB Shmem: 68 kB Slab: 13592 kB SReclaimable: 5792 kB SUnreclaim: 7800 kB KernelStack: 544 kB PageTables: 248 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 1034576 kB Committed_AS: 37240 kB VmallocTotal: 245760 kB VmallocUsed: 3572 kB VmallocChunk: 225952 kB
Диски здесь кстати смонтированы как Network block device:
root@c1-10-1-4-113:~# df -H Filesystem Size Used Avail Use% Mounted on /dev/nbd0 20G 659M 18G 4% / none 4.1k 0 4.1k 0% /sys/fs/cgroup none 1.1G 4.1k 1.1G 1% /dev none 212M 62k 212M 1% /run none 5.3M 0 5.3M 0% /run/lock none 1.1G 0 1.1G 0% /run/shm none 105M 0 105M 0% /run/user
Тестим
Линейная скорость записи на диск:
root@c1-10-1-4-113:~# dd if=/dev/zero of=test bs=64k count=16k conv=fdatasync 16384+0 records in 16384+0 records out 1073741824 bytes (1.1 GB) copied, 13.782 s, 77.9 MB/s
SSD мягко говоря не радует =)
Пинги стандартные из РФ до Франции:
PING 212.47.238.60 (212.47.238.60) 56(84) bytes of data. 64 bytes from 212.47.238.60: icmp_seq=1 ttl=51 time=87.3 ms 64 bytes from 212.47.238.60: icmp_seq=5 ttl=51 time=83.4 ms 64 bytes from 212.47.238.60: icmp_seq=6 ttl=51 time=88.7 ms 64 bytes from 212.47.238.60: icmp_seq=11 ttl=51 time=80.6 ms
Ну а теперь немного тестов sysbench
Я не большой специалист по серверному железу и его тестированию поэтому выложу сухие цифры дабы читатели сами смогли для себя отметить какие то параметры.
Для начала замерим скорость чтения/записи на диск. Разработчик теста рекомендует тестировать скорость записи на диск объемами превышащими объем ОЗУ на машине чтобы кэш не влиял на тесты. Т.к. здесь всего 2Gb RAM то я решил ограничиться тестом в 4Gb.
root@c1-10-1-4-113:~# sysbench --test=fileio --file-total-size=4G --file-test-mode=rndrw --max-time=300 --max-requests=0 run sysbench 0.4.12: multi-threaded system evaluation benchmark Running the test with following options: Number of threads: 1 Extra file open flags: 0 128 files, 32Mb each 4Gb total file size Block size 16Kb Number of random requests for random IO: 0 Read/Write ratio for combined random IO test: 1.50 Periodic FSYNC enabled, calling fsync() each 100 requests. Calling fsync() at the end of test, Enabled. Using synchronous I/O mode Doing random r/w test Threads started! Time limit exceeded, exiting... Done. Operations performed: 10980 Read, 7320 Write, 23403 Other = 41703 Total Read 171.56Mb Written 114.38Mb Total transferred 285.94Mb (975.96Kb/sec) 61.00 Requests/sec executed Test execution summary: total time: 300.0132s total number of events: 18300 total time taken by event execution: 16.0474 per-request statistics: min: 0.02ms avg: 0.88ms max: 22.02ms approx. 95 percentile: 2.61ms Threads fairness: events (avg/stddev): 18300.0000/0.00 execution time (avg/stddev): 16.0474/0.00
Итоговые значения:
Read 171.56Mb Written 114.38Mb Total transferred 285.94Mb (975.96Kb/sec)
Замеряем производительность процессора нагружая его вычислениями 64-разрядных чисел.
Запустим в 4 потока по числу доступных ядер процессора.
root@c1-10-1-4-113:~# sysbench --test=cpu --cpu-max-prime=20000 --num-threads=4 run sysbench 0.4.12: multi-threaded system evaluation benchmark Running the test with following options: Number of threads: 4 Doing CPU performance benchmark Threads started! Done. Maximum prime number checked in CPU test: 20000 Test execution summary: total time: 172.1333s total number of events: 10000 total time taken by event execution: 688.4090 per-request statistics: min: 68.53ms avg: 68.84ms max: 77.35ms approx. 95 percentile: 68.69ms Threads fairness: events (avg/stddev): 2500.0000/16.17 execution time (avg/stddev): 172.1022/0.02
Тестим процессор нагружая его большим количеством конкурирующих потоков:
root@c1-10-1-4-113:~# sysbench --test=threads --thread-locks=1 --max-time=20s run sysbench 0.4.12: multi-threaded system evaluation benchmark Running the test with following options: Number of threads: 1 Doing thread subsystem performance test Thread yields per test: 1000 Locks used: 1 Threads started! Done. Test execution summary: total time: 11.1618s total number of events: 10000 total time taken by event execution: 11.1440 per-request statistics: min: 1.10ms avg: 1.11ms max: 1.38ms approx. 95 percentile: 1.16ms Threads fairness: events (avg/stddev): 10000.0000/0.00 execution time (avg/stddev): 11.1440/0.00
root@c1-10-1-4-113:~# sysbench --test=mutex --num-threads=64 run sysbench 0.4.12: multi-threaded system evaluation benchmark Running the test with following options: Number of threads: 64 Doing mutex performance test Threads started! Done. Test execution summary: total time: 4.2975s total number of events: 64 total time taken by event execution: 271.3411 per-request statistics: min: 4138.53ms avg: 4239.70ms max: 4273.79ms approx. 95 percentile: 4270.67ms Threads fairness: events (avg/stddev): 1.0000/0.00 execution time (avg/stddev): 4.2397/0.03
Тестируем производительность оперативной памяти:
root@c1-10-1-4-113:~# sysbench --test=memory --memory-total-size=1G --num-threads=4 run sysbench 0.4.12: multi-threaded system evaluation benchmark Running the test with following options: Number of threads: 4 Doing memory operations speed test Memory block size: 1K Memory transfer size: 1024M Memory operations type: write Memory scope type: global Threads started! Done. Operations performed: 1048576 (720348.64 ops/sec) 1024.00 MB transferred (703.47 MB/sec) Test execution summary: total time: 1.4557s total number of events: 1048576 total time taken by event execution: 4.4695 per-request statistics: min: 0.00ms avg: 0.00ms max: 14.34ms approx. 95 percentile: 0.00ms Threads fairness: events (avg/stddev): 262144.0000/5507.23 execution time (avg/stddev): 1.1174/0.01
Резюме
Довольно интересный подход с инстансами на реальном железе которые при этом стартуют за пару минут. Честно говоря процессоры ARMv7 на серверах я пробую впервые.
Производительность у сервера в принципе неплохая, но далека до отличной. Не понравилась скорость записи на диск ибо на уровне SATA-2 дисков, да и 100Гб раздел у меня автоматически к инстансу не прикрутился, то ли я где то кнопку нажать забыл, то ли всему виной статус беты.
Думаю что эта революционная идея с физическими машинами в облаке имеет много плюсов в перспективе и когда продукт выйдет из статуса беты производительность инстансов будет намного выше. Рад что появилась возможность потестить.
Кстати при регистрации у меня не спросили ничего кроме имени, фамилии и e-mail. Многие сервисы сейчас грешат тем что даже чтобы просто посмотреть одним глазком нужно зарегистрироваться указав полностью свои данные, верифицировать номер телефона и привязать свою карточку/paypal.