online.net logo

Всем привет!
Неделя конечно выдалась очень интересной — сразу три хостинг провайдера выкатили на бета-тест свои новые облачные решения. Провайдер Online.net решил не мелочиться и вообще выдать полную халяву на время бета-тестов, правда для того чтобы зарегаться на labs.online.net нужно сперва получить инвайт.
Как оказалось это дело 5 минут — надо всего то сходить в irc.online.net на канал #onlinelabs и запросить его там.

Итак, мы внутри

cloud.online.net dashboard

Тут нас встречает довольно симпатичный современный интерфейс управления услугами. По ссылке «Storage» нас встречает минималистичный интерфейс управления контейнерами s3, а верхний блок меню полностью посвящен управлению инстансами. Тут можно привязывать/отвязывать диски, управлять своими образами, рулить сетью и конечно же создавать новые инстансы.

Вообще Online.net позиционирует свое облако как попытку отказа от виртуальных серверов в пользу «физического облака». Регион для старта инстансов пока только один — Париж.

Перед созданием инстансов вас попросят добавить свой публичный ssh-ключ для авторизации. Затем встретит вот такой интересный интерфейс:

cloud.online.net - create server

online_net-create-server-part2

Как мы видим кол-во готовых образов всего два — 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.