Testing several German based vServer providers and their product(s)
- Intro
- First insights when getting a overview of vServer providers
- Overview of the order process and features provided
- Summary as Spreadsheet + Text
- Tests in detail
Intro
I need to evaluate the performance i got for my money for various vServer (virtual Server) providers in Germany.
My existing vServer is a rather old one in terms of how long I have this server and thus how old the underlying hardware may/could be. I also experienced now-and-then delays in web requests and could not determine the cause as the overall load on my instance was/is low.
My current vServer was ordered in January 2012 from Strato. I will benchmark that machine against a actual vServer Version of Strato and against vServers from Hetzner and DomainFactory.
I choose the smallest available machine. None of the providers except DomainFactory let me try-before-buy a server. Thus i had to go into contract at least for a month for testing which will cost me approx 8 euros for each vServer.
I cannot test for general availability but for CPU and disk performance and will provide a system overview via ls and cut the most important parts and info of the system.
The tests I will run are basic and non-scientific but will let me compare stupidly raw performance of the CPU and disk and thus let me make conclusions about the underlying hardware and the overall performance.
All tests where made after 9pm in order not to interrupt services of other vServer users on the underlying physical hosts. I was done with all the tests at midnight on the same day.
Those are the test I will run on each and every machine.
Get the Distribution name
$ cat /etc/issue
Retrieve Kernel Version, Name, Arch
$ uname -a
Fetch CPU-Information
$ cat /proc/cpuinfo | head -n 25
Count the number of CPUs available
$ cat /proc/cpuinfo | grep processor | wc -l
Retrieve detailed Memory info
$ cat /proc/meminfo
And basic memory overview
$ free -m
What file systems are mounted, what are their mount points and default options?
$ mount
Retrieve disk sizes and mount points
$ df -h
List the contents of /dev
$ ls /dev
Fetch the fstab contents
$ cat /etc/fstab
How is the network-interface configuration
$ cat /etc/network/interfaces
What are the current ifconfig details?
$ ifconfig
Make a simple sequential write test. 1GB file.
$ time dd if=/dev/zero of=/root/test.1g bs=256M count=4
Make Disk Test using bonnie++. Use 256MB RAM and create a 2G file to be consistent over all hosts/servers and vServer constraints. I found DomainFactory vServer to behave very performant and thus raised the file size up to 16GB and Memory parameter to 4GB for tests.
$ apt-get install bonnie
$ mkdir -p /home/croessler/bonnie-test
$ bonnie++ -d /home/croessler/bonnie-test/ -s 2g -r 256 -f -b -u root
CPU: Do a simple brute force calculation
$ time echo $((42**4242424242))
CPU: read from /dev/zero and discard that information to /dev/null
$ time dd if=/dev/zero of=/dev/null bs=256M count=4
CPU: read from /dev/zero, zip that data and discard after on
$ apt-get install bzip2
$ time dd if=/dev/zero bs=256M count=4 | bzip2 > /dev/null
First insights when getting a overview of vServer providers
Only DomainFactory and its vServer product “JiffyBoxes” let me go into a 24hour test without having to sign a contract.
Only DomainFactory offers Linux based virtual Servers with more than one CPU core. Why? At least two cores would be very beneficial for the physical hosts guests.
Only Strato and DomainFactory provide integrated Backup-solutions in Form of Snapshots of some sort. I don’t take that feature much into account, but its nice to have. But nothing beats a dedicated backup solution also providing incremental file based backups instead of having full system snapshots (all or nothing).
DomainFactory provides SSD-Storage too.
Overview of the order process and features provided
Strato - V-PowerServer A v5.1 (January 2012)
I own this virtual Server since January 2012. Therefore i assume the underlying physical Server is a bit old(ish).
The benchmarks on this server are out of scope as it runs several services that i and others rely on. Apache is running as well as Postfix, thus running benchmarks while those services are active and being used will falsify the results. Therefore i will run them (and on other servers as well) up to three times to get a small glimpse of the overall/median performance.
Strato - Virtual Server Linux Level 1 (v1304.1) (March 2014)
My Order was placed on 20:30.
5 minutes after order placement i received a confirmation email.
1 hour after order I got a mail stating the server is ready.
1 hour and 15 minutes after order a got a sms with the password for the strato-administration-panel.
1 hour and 30 minutes after order the technical hostname has been set up in DNS.
Ubuntu 12.04 LTS has been preinstalled. I needed to invoke a re-installation to Debian 7.0 from within the administration-panel.
A quick word to Strato’s customer back-end and server-administration-panel: config.stratoserver.net is extremely unresponsive. Each and every click needs at least 5 seconds or more before responding (mouseclick -> time to receive the HTML response). The back-end is full of advertising also…
I canceled that contract immediately after testing but Strato could not provide me a annulation date of today but only in 4 weeks. There seems to be no special termination here.
Hetzner - vServer VQ7 (March 2014)
When ordering I can choose between several distributions:
- Rescue-System
- CentOS 6.5 minimal
- Debian 7.0 LAMP - nur 64 Bit
- Debian 7.0 minimal
- openSUSE 13.1 minimal - nur 64 Bit
- Ubuntu 12.04 LTS minimal
- Ubuntu 13.10 minimal - nur 64 Bit
- CentOS 6.5 + cPanel - nur 64 Bit
- CentOS 6.5 + Plesk - nur 64 Bit
- Debian 7.0 + Plesk - nur 64 Bit
It also let me choose the architecture to be either 32bit or 64bit. I choose “Debian 7.0 minimal as 64bit” for this test.
Minimum contract term is 1 month.
The order confirmation mail was received approx 10 minutes later. The server was set up and I received ip-address and login information 15 minutes after order.
According to the AGB I can withdraw the contract within 14 days after beginning of the contract. Therefore I can test this system for 14 days. Great service!
The configuration interface is extremely useful / user-friendly and fast loading. It enables fast and easy Server-management but it’s not too easy by hiding important information from the user (looking at you 1and1 configuration-backend).
DomainFactory JiffyBox 24h Test-System (March 2014 CloudLevel 1)
DF (belongs to HostEurope) provides test-systems that are available for 24 hours.
The order process was fast, easy and straightforward.
- enter email address and phone number
- you get a call on your phone and you’ll get the unlock-code (via electronic voice)
- you receive an email 5 minutes later with further details
I was provided with a test-server which specs are equal to their entry-level vServer except the test-server has 25GB storage instead of 75GB. But that will fit nicely for this test.
I also got plenty of Distributions to choose from:
- CentOS 5.10 (1 GB)
- CentOS 5.10 64-Bit (1 GB)
- CentOS 6.5 (2 GB)
- CentOS 6.5 64-Bit (2 GB)
- Debian Wheezy (7.3) (2 GB)
- Debian Wheezy (7.3) 64-Bit (2 GB)
- Fedora 20 (2 GB)
- Fedora 20 64-Bit (2 GB)
- openSUSE 13.1 (2 GB)
- openSUSE 13.1 64-Bit (2 GB)
- Ubuntu 10.04 LTS (512 MB)
- Ubuntu 10.04 LTS 64-Bit (512 MB)
- Ubuntu 12.04 LTS (2 GB)
- Ubuntu 12.04 LTS 64-Bit (2 GB)
The administration interface is stunning and awesome yet simple and experienced users as well as beginners will find all information. Integrated are some kind of popups providing information in real-time when creating an instance:
- create instance …
- creating disk + swap
- installing system showing a progress bar
That messages flew by like nothing. DF was kind enough to provide a 24h test-server but limits the use of such a server:
- several ports are blocked
- 5GB maximum traffic
- small other limitations
I can test that server with such limitations, that’s OK.
Summary as Spreadsheet + Text
Long story short. Here is my result. I did NOT took average values by calculating but by looking at them manually. I don’t care for sub-second differences.
Hetzner and DomainFactory seem to have (more or less) up-to-date kernels and provide an 64bit userspace+kernel, whereas Strato only offers 32bit arch.
Strato has good Disk-performance when reading/writing sequential (100MB/s +). Hetzner provides rock-solid real-world values of about 60MB/s. DomainFactory goes through the top with 600MB/s+ but it seems this is due to some kind of write-cache which is OK, but one must know that in order to be able to compare benchmarks on a fairly basis. Or its because 24h test-instances utilize SSDs. (everything according to dd-tests)
DomainFactory is the only one who provides more than one virtual CPU.
I found the 512 MB RAM in the Hetzner instance to be too limited for most of today’s use. One can use that small vServer (vServer VQ7) for small hosts/requirements, but i think the next bigger offer is a better fit (but costs 5€ more).
Disk space from Hetzner and my OLD Strato-Server are about the same: 20GB. Strato now offers 50GB storage capacity and DomainFactory hits 75GB (test-server got 25GB only). For my use 20-30 GB is OK.
In terms of raw single-core-CPU-performance Hetzner and DomainFactory take the lead. Strato seems to utilize some older Opterons. But that really doesn’t make the cut. I could not determine a leader here on raw CPU performance, that will heavily depend on each and every use-case. Nevertheless, Hetzner was fastest, second is DomainFactory.
A real plus for Hetzner and DomainFactory is the ability to modify the mountoptions in /etc/fstab. Strato does not take into account my modifications. Also Strato uses reiserfs as Filesystem whereas Hetzner and DomainFactory use ext3/4. A plus for DomainFactory for fine-tuning the fstab regarding the noatime mount option and utilizing a modern filesystem like ext4.
Having the above information currently i would either go with DomainFactory and their smallest vServer (CloudLevel 1) because it has fast CPUs (3 of them!), fast and huge storage. Costs: about 15€ per month.
Hetzner would place second but I would have not to choose the smallest vServer but the second one because of the slightly small amount of RAM (512MB). The next larger vServer provides 1GB of RAM. The smallest (512MB) costs about 8€ per month, the second costs 13€ per month being two euros cheaper than DomainFactory.
I personally would not recommend Strato at this point. They may have good sequential write performance but random-io kills that thing. Its cheap nevertheless and may suite any light use-case here. Costs 8€ per month. Nevertheless I can say that I never had any problems in terms of reliability / outages with Strato. I cannot say anything about Hetzner and DomainFactory about this point as I haven’t used any of their vServers. I was utilizing a Hetzner rootserver some time ago without any problems as well as one of Strato’s rootservers.
Update: Phoronix has just released a vServer IO-Benchmark here. As one can see, sometimes enabling virtio gains performance, sometimes performance drops. Seems to be some Kernel internal glitches.
Tests in detail
Now the tests itself. Largely uncommented.
Strato - V-PowerServer A v5.1 (January 2012)
Get the Distribution name
$ cat /etc/issue
Ubuntu 10.04.4 LTS \n \l
Retrieve Kernel Version, Name, Arch
$ uname -a
Linux hxxxxxxx.stratoserver.net 2.6.32-042stab078.27 #1 SMP Mon Jul 1 20:48:07 MSK 2013 i686 GNU/Linux
Fetch CPU-Information
$ cat /proc/cpuinfo | head -n 25
processor : 0
vendor_id : AuthenticAMD
cpu family : 16
model : 2
model name : Quad-Core AMD Opteron(tm) Processor 2346 HE
stepping : 3
cpu MHz : 750.000
cache size : 512 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 4
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 5
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc rep_good nonstop_tsc extd_apicid pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs npt lbrv svm_lock
bogomips : 3616.52
TLB size : 1024 4K pages
clflush size : 64
cache_alignment : 64
address sizes : 48 bits physical, 48 bits virtual
power management: ts ttp tm stc 100mhzsteps hwpstate
There seems to be AMD advanced speed step involved here. CPU-Frequency is scaled down when not in use.
Count the number of CPUs available
$ cat /proc/cpuinfo | grep processor | wc -l
1
Retrieve detailed Memory info
$ cat /proc/meminfo
MemTotal: 2097152 kB
MemFree: 1531216 kB
Cached: 184552 kB
Active: 208432 kB
Inactive: 314332 kB
Active(anon): 121188 kB
Inactive(anon): 217024 kB
Active(file): 87244 kB
Inactive(file): 97308 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 16 kB
Writeback: 0 kB
AnonPages: 338212 kB
Shmem: 39816 kB
Slab: 43156 kB
SReclaimable: 30148 kB
SUnreclaim: 13008 kB
And basic memory overview
$ free -m
total used free shared buffers cached
Mem: 2048 552 1495 0 0 180
-/+ buffers/cache: 372 1675
Swap: 0 0 0
What filesystems are mounted, what are their mountpoints and default options?
$ mount
/dev/vzfs on / type reiserfs (rw,usrquota,grpquota)
Retrieve disksizes and mountpoints
$ df -h
/dev/vzfs 25G 6,7G 19G 27% /
List the contents of /dev
$ ls /dev
agpgart dsp loop0 mem midi3 null ptyp4 ptypc ram11 ram4 rmidi1 smpte3 tty2 ttyp0 ttyp8 urandom
audio dsp1 loop1 midi0 mixer port ptyp5 ptypd ram12 ram5 rmidi2 sndstat tty3 ttyp1 ttyp9 vzfs
audio1 dsp2 loop2 midi00 mixer1 ptmx ptyp6 ptype ram13 ram6 rmidi3 stderr tty4 ttyp2 ttypa xconsole
audio2 dsp3 loop3 midi01 mixer2 pts ptyp7 ptypf ram14 ram7 sequencer stdin tty5 ttyp3 ttypb zero
audio3 fd loop4 midi02 mixer3 ptyp0 ptyp8 ram ram15 ram8 shm stdout tty6 ttyp4 ttypc
audioctl full loop5 midi03 mpu401data ptyp1 ptyp9 ram0 ram16 ram9 smpte0 tty tty7 ttyp5 ttypd
console kmem loop6 midi1 mpu401stat ptyp2 ptypa ram1 ram2 random smpte1 tty0 tty8 ttyp6 ttype
core log loop7 midi2 net ptyp3 ptypb ram10 ram3 rmidi0 smpte2 tty1 tty9 ttyp7 ttypf
Fetch the fstab contents
$ cat /etc/fstab
proc /proc proc defaults 0 0
none /dev/pts devpts rw 0 0
How is the network-interface configuration
$ cat /etc/network/interfaces
# This configuration file is auto-generated.
# WARNING: Do not edit this file, otherwise your changes will be lost.
# Please edit template /etc/network/interfaces.template instead.
auto lo
iface lo inet loopback
address 127.0.0.1
netmask 255.0.0.0
broadcast xx.xx.xx.xx
up ip route replace 127.0.0.0/8 dev lo
# Auto generated venet0 interfaces
auto venet0
iface venet0 inet static
address 127.0.0.1
netmask 255.255.255.255
broadcast 0.0.0.0
up route add default dev venet0
iface venet0 inet6 static
address ::2
netmask 128
up ip -6 r a default dev venet0
auto venet0:0
iface venet0:0 inet static
address xxx.xxx.xxx.xxx
netmask 255.255.255.255
What are the current ifconfig details?
$ ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:33634802 errors:0 dropped:0 overruns:0 frame:0
TX packets:33634802 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:7579557233 (7.5 GB) TX bytes:7579557233 (7.5 GB)
venet0 Link encap:UNSPEC HWaddr 00-00-00.....
inet addr:127.0.0.1 P-t-P:127.0.0.1 Bcast:0.0.0.0 Mask:255.255.255.255
inet6 addr: ::2/128 Scope:Compat
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
RX packets:37205769 errors:0 dropped:0 overruns:0 frame:0
TX packets:38955833 errors:0 dropped:273 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:21123192573 (21.1 GB) TX bytes:27058762623 (27.0 GB)
venet0:0 Link encap:UNSPEC HWaddr 00-00-00-00-00-....
inet addr:xxx.xxx.xxx.xxx P-t-P:xxx.xxx.xxx.xxx Bcast:0.0.0.0 Mask:255.255.255.255
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
Make a simple sequential write test. 1GB file.
$ time dd if=/dev/zero of=/root/test.1g bs=256M count=4
4+0 records in
4+0 records out
1073741824 bytes (1,1 GB) copied, 10,6001 s, 101 MB/s
real 0m11.543s
user 0m0.003s
sys 0m8.758s
$ time dd if=/dev/zero of=/root/test.1g bs=256M count=4
4+0 records in
4+0 records out
1073741824 bytes (1,1 GB) copied, 10,5066 s, 102 MB/s
real 0m11.731s
user 0m0.002s
sys 0m8.837s
$ time dd if=/dev/zero of=/root/test.1g bs=256M count=4
4+0 records in
4+0 records out
1073741824 bytes (1,1 GB) copied, 10,6003 s, 101 MB/s
real 0m11.482s
user 0m0.002s
sys 0m8.531s
Make Disk Test using bonnie++. Use 256MB RAM and create a 2G file to be consistent over all hosts/servers and vServer constraints.
$ apt-get install bonnie
$ mkdir -p /home/croessler/bonnie-test
$ bonnie++ --get-me-the-version-please 2>&1 | tail -n 1
Version: 1.96
First run (2G file, 256M Ram):
$ bonnie++ -d /home/croessler/bonnie-test/ -s 2g -r 256 -f -b -u root
Version 1.96 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
hxxxxxxx.stratos 2G 41360 18 29353 9 894500 61 794.6 25
Latency 2630ms 1912ms 53647us 266ms
Version 1.96 ------Sequential Create------ --------Random Create--------
hxxxxxx.stratoserv -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 30 0 +++++ +++ 48 0 26 0 +++++ +++ 45 0
Latency 792ms 1340us 771ms 738ms 157us 787ms
First run results:
Strato 2012 | 2G File + 256M Ram
41360 KByte/s written sequentially
29353 KByte/s read and then written and flushed to the disk
894500 KByte/s sequential read
794.6 seeks/s random seeks
The sequential read performance of over 894MB/s is due to memory based file caching.
Second run (4G file, 2G Ram):
$bonnie++ -d /home/croessler/bonnie-test/ -s 4g -r 2g -f -b -u root
Version 1.96 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
h1993965.stratos 4G 42369 19 22648 8 96734 11 563.7 11
Latency 2586ms 3384ms 285ms 540ms
Version 1.96 ------Sequential Create------ --------Random Create--------
h1993965.stratoserv -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 31 0 +++++ +++ 47 0 31 0 +++++ +++ 42 0
Latency 800ms 1315us 727ms 683ms 908us 765ms
Second run results:
Strato 2012 | 4G File + 2G Ram
42369 KByte/s written sequentially
22648 KByte/s read and then written and flushed to the disk
96734 KByte/s sequential read
563.7 seeks/s random seeks
Write performance and read-write-flush performance is identical to the first run. Sequential read is now on a normal level as the file was larger than available memory. Thus bonnie had to access the disk instead of ram. Thats OK.
CPU: Do a simple bruteforce calculation
$ time echo $((42**4242424242))
0
real 0m27.993s
user 0m20.564s
sys 0m0.000s
$ time echo $((42**4242424242))
0
real 0m30.921s
user 0m20.258s
sys 0m0.010s
$ time echo $((42**4242424242))
0
real 0m27.166s
user 0m20.045s
sys 0m0.003s
CPU: read from /dev/zero and discard that information to /dev/null
$ time dd if=/dev/zero of=/dev/null bs=256M count=4
4+0 records in
4+0 records out
1073741824 bytes (1,1 GB) copied, 0,902056 s, 1,2 GB/s
real 0m0.976s
user 0m0.001s
sys 0m0.759s
$ time dd if=/dev/zero of=/dev/null bs=256M count=4
4+0 records in
4+0 records out
1073741824 bytes (1,1 GB) copied, 0,830306 s, 1,3 GB/s
real 0m0.904s
user 0m0.002s
sys 0m0.790s
$ time dd if=/dev/zero of=/dev/null bs=256M count=4
4+0 records in
4+0 records out
1073741824 bytes (1,1 GB) copied, 1,02609 s, 1,0 GB/s
real 0m1.073s
user 0m0.000s
sys 0m0.831s
CPU: read from /dev/zero, zip that data and discard after on
$ apt-get install bzip2
$ bzip2 --version 2>&1 | head -n 1
bzip2, a block-sorting file compressor. Version 1.0.5, 10-Dec-2007.
$ time dd if=/dev/zero bs=256M count=4 | bzip2 > /dev/null
4+0 records in
4+0 records out
1073741824 bytes (1,1 GB) copied, 65,8892 s, 16,3 MB/s
real 1m6.597s
user 0m45.841s
sys 0m3.618s
$ time dd if=/dev/zero bs=256M count=4 | bzip2 > /dev/null
4+0 records in
4+0 records out
1073741824 bytes (1,1 GB) copied, 66,423 s, 16,2 MB/s
real 1m7.133s
user 0m45.983s
sys 0m3.950s
$ time dd if=/dev/zero bs=256M count=4 | bzip2 > /dev/null
4+0 records in
4+0 records out
1073741824 bytes (1,1 GB) copied, 66,7379 s, 16,1 MB/s
real 1m7.447s
user 0m45.821s
sys 0m4.196s
$ time dd if=/dev/zero bs=256M count=4 | bzip2 > /dev/null
4+0 records in
4+0 records out
1073741824 bytes (1,1 GB) copied, 67,4715 s, 15,9 MB/s
real 1m8.187s
user 0m46.356s
sys 0m4.135s
Strato - Virtual Server Linux Level 1 (v1304.1) (March 2014)
Get the Distribution name
$ cat /etc/issue
Debian GNU/Linux 7 \n \l
Retrieve Kernel Version, Name, Arch
$ uname -a
Linux hxxxxxx.stratoserver.net 3.2.41-042stab078.27 #1 SMP Mon Jul 1 20:48:07 MSK 2013 i686 GNU/Linux
Fetch CPU-Information
$ cat /proc/cpuinfo | head -n 25
processor : 0
vendor_id : AuthenticAMD
cpu family : 16
model : 8
model name : AMD Opteron(tm) Processor 4180
stepping : 1
cpu MHz : 1950.000
cache size : 512 KB
physical id : 0
siblings : 6
core id : 0
cpu cores : 6
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 5
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc rep_good nonstop_tsc extd_apicid pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt nodeid_msr npt lbrv svm_lock nrip_save pausefilter
bogomips : 5200.31
TLB size : 1024 4K pages
clflush size : 64
cache_alignment : 64
address sizes : 48 bits physical, 48 bits virtual
power management: ts ttp tm stc 100mhzsteps hwpstate
Count the number of CPUs available
$ cat /proc/cpuinfo | grep processor | wc -l
1
Retrieve detailed Memory info
$ cat /proc/meminfo
MemTotal: 2097152 kB
MemFree: 2034868 kB
Cached: 54844 kB
Active: 31680 kB
Inactive: 27796 kB
Active(anon): 2316 kB
Inactive(anon): 2316 kB
Active(file): 29364 kB
Inactive(file): 25480 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 4632 kB
Shmem: 2612 kB
Slab: 2796 kB
SReclaimable: 1048 kB
And basic memory overview
$ free -m
total used free shared buffers cached
Mem: 2048 60 1987 0 0 53
-/+ buffers/cache: 7 2040
Swap: 0 0 0
What filesystems are mounted, what are their mountpoints and default options?
$ mount
/dev/vzfs on / type reiserfs (rw,usrquota,grpquota)
Retrieve disksizes and mountpoints
$ df -h
Dateisystem Größe Benutzt Verf. Verw% Eingehängt auf
/dev/vzfs 50G 178M 50G 1% /
List the contents of /dev
$ ls /dev
char fuse null ptyp1 ptyp5 ptyp9 ptypd shm tty tty11 tty4 tty8 ttyp2 ttyp6 ttypa ttype xconsole
console kmsg ptmx ptyp2 ptyp6 ptypa ptype stderr tty0 tty12 tty5 tty9 ttyp3 ttyp7 ttypb ttypf zero
fd log pts ptyp3 ptyp7 ptypb ptypf stdin tty1 tty2 tty6 ttyp0 ttyp4 ttyp8 ttypc urandom
full net ptyp0 ptyp4 ptyp8 ptypc random stdout tty10 tty3 tty7 ttyp1 ttyp5 ttyp9 ttypd vzfs
Fetch the fstab contents
$ cat /etc/fstab
proc /proc proc defaults 0 0
none /dev/pts devpts rw,gid=5,mode=620 0 0
none /run/shm tmpfs defaults 0 0
How is the network-interface configuration
$ cat /etc/network/interfaces
# This configuration file is auto-generated.
# WARNING: Do not edit this file, otherwise your changes will be lost.
# Please edit template /etc/network/interfaces.template instead.
auto lo
iface lo inet loopback
address 127.0.0.1
netmask 255.0.0.0
broadcast xx.xx.xx.xx
up ip route replace 127.0.0.0/8 dev lo
# Auto generated venet0 interfaces
auto venet0
iface venet0 inet static
address 127.0.0.1
netmask 255.255.255.255
broadcast 0.0.0.0
up route add default dev venet0
iface venet0 inet6 static
address ::2
netmask 128
up ip -6 r a default dev venet0
auto venet0:0
iface venet0:0 inet static
address xxx.xxx.xxx.xxx
netmask 255.255.255.255
What are the current ifconfig details?
$ ifconfig
lo Link encap:Lokale Schleife
inet Adresse:127.0.0.1 Maske:255.0.0.0
inet6-Adresse: ::1/128 Gültigkeitsbereich:Maschine
UP LOOPBACK RUNNING MTU:16436 Metrik:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
Kollisionen:0 Sendewarteschlangenlänge:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
venet0 Link encap:UNSPEC Hardware Adresse 00-00-00-00-00-00-00-00-0...
inet Adresse:127.0.0.1 P-z-P:127.0.0.1 Bcast:0.0.0.0 Maske:255.255.255.255
inet6-Adresse: ::2/128 Gültigkeitsbereich:Kompatibilität
UP BROADCAST PUNKTZUPUNKT RUNNING NOARP MTU:1500 Metrik:1
RX packets:1621 errors:0 dropped:0 overruns:0 frame:0
TX packets:859 errors:0 dropped:0 overruns:0 carrier:0
Kollisionen:0 Sendewarteschlangenlänge:0
RX bytes:1870952 (1.7 MiB) TX bytes:70989 (69.3 KiB)
venet0:0 Link encap:UNSPEC Hardware Adresse 00-00-00-00-00-00-00...
inet Adresse:xxx.xxx.xxx.xxx P-z-P:xxx.xxx.xxx.xxx Bcast:xxx.xxx.xxx.xxx Maske:255.255.255.255
UP BROADCAST PUNKTZUPUNKT RUNNING NOARP MTU:1500 Metrik:1
Make a simple sequential write test. 1GB file.
$ time dd if=/dev/zero of=/root/test.1g bs=256M count=4
4+0 Datensätze ein
4+0 Datensätze aus
1073741824 Bytes (1,1 GB) kopiert, 2,56599 s, 418 MB/s
real 0m2.588s
user 0m0.000s
sys 0m1.976s
$ time dd if=/dev/zero of=/root/test.1g bs=256M count=4
4+0 Datensätze ein
4+0 Datensätze aus
1073741824 Bytes (1,1 GB) kopiert, 5,95319 s, 180 MB/s
real 0m7.750s
user 0m0.002s
sys 0m2.437s
$ time dd if=/dev/zero of=/root/test.1g bs=256M count=4
4+0 Datensätze ein
4+0 Datensätze aus
1073741824 Bytes (1,1 GB) kopiert, 7,53937 s, 142 MB/s
real 0m7.775s
user 0m0.001s
sys 0m2.281s
$ time dd if=/dev/zero of=/root/test.1g bs=256M count=4
4+0 Datensätze ein
4+0 Datensätze aus
1073741824 Bytes (1,1 GB) kopiert, 9,37666 s, 115 MB/s
real 0m11.185s
user 0m0.000s
sys 0m2.175s
$ time dd if=/dev/zero of=/root/test.1g bs=256M count=4
4+0 Datensätze ein
4+0 Datensätze aus
1073741824 Bytes (1,1 GB) kopiert, 8,50884 s, 126 MB/s
real 0m8.747s
user 0m0.000s
sys 0m2.415s
Make Disk Test using bonnie++. Use 256MB RAM and create a 2G file to be consistent over all hosts/servers and vServer constraints.
$ apt-get install bonnie
$ mkdir -p /home/croessler/bonnie-test
$ bonnie++ --get-me-the-version-please 2>&1 | tail -n 1
Version: 1.96
First run (2G Filesize, 256M Ram)
$ bonnie++ -d /home/croessler/bonnie-test/ -s 2g -r 256 -f -b -u root
Version 1.96 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
hxxxxxxx.stratos 2G 100654 11 82528 8 929619 31 391.8 5
Latency 2039ms 2394ms 544ms 637ms
Version 1.96 ------Sequential Create------ --------Random Create--------
hxxxxxxx.stratoserv -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 9 0 +++++ +++ 15 0 9 0 +++++ +++ 21 0
Latency 1206ms 478us 2065ms 3658ms 107us 3604ms
First run results:
Strato 2014 | 2G File + 256M Ram
100654 KByte/s written sequentially
82528 KByte/s read and then written and flushed to the disk
929619 KByte/s sequential read
391.8 seeks/s random seeks
Sequential read with over 920MB/s is caused by the filesystem cache in RAM. The remaining values are ok. Thats weird, because bonnie took ages for this test (1hour+).
Second run (4G Filesize, 2G Ram)
$ bonnie++ -d /home/croessler/bonnie-test/ -s 4g -r 2g -f -b -u root
Version 1.96 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
hxxxxxxx.stratos 4G 93241 10 64485 7 2269066 75 311.2 1
Latency 3603ms 3158ms 25074us 799ms
Version 1.96 ------Sequential Create------ --------Random Create--------
hxxxxxxx.stratoserv -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 8 0 +++++ +++ 14 0 9 0 +++++ +++ 16 0
Latency 1825ms 488us 1109ms 13456ms 12us 1400ms
Second run results:
Strato 2014 | 4G File + 2G Ram
93241 KByte/s written sequentially
64485 KByte/s read and then written and flushed to the disk
2269066 KByte/s sequential read
311.2 seeks/s random seeks
As I said before, thats weird: bonnie took ages for this test (2 hours), sequential write is at 90MB/s and sequential read is over 2GB/s. That can’t be. In the first test bonnie reached only 900MB/s in sequential read. That difference is too high than it can be explained by the bigger file (4 instead of 2 GB).
Let’s do a third test, again with 4G File and 2G Ram:
$ bonnie++ -d /home/croessler/bonnie-test/ -s 4g -r 2g -f -b -u root
Version 1.96 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
hxxxxxxx.stratos 4G 101716 11 102830 10 1649993 55 263.1 6
Latency 2756ms 4304ms 509ms 770ms
Version 1.96 ------Sequential Create------ --------Random Create--------
hxxxxxxx.stratoserv -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 9 0 +++++ +++ 14 0 10 0 +++++ +++ 28 0
Latency 1555ms 540us 1146ms 1711ms 11us 1090ms
Third run results:
Strato 2014 | 4G File + 2G Ram
101716 KByte/s written sequentially
102830 KByte/s read and then written and flushed to the disk
1649993 KByte/s sequential read
263.1 seeks/s random seeks
CPU: Do a simple bruteforce calculation
$ time echo $((42**4242424242))
0
real 0m19.623s
user 0m14.721s
sys 0m0.000s
$ time echo $((42**4242424242))
0
real 0m19.623s
user 0m14.715s
sys 0m0.007s
$ time echo $((42**4242424242))
0
real 0m19.590s
user 0m14.713s
sys 0m0.000s
CPU: read from /dev/zero and discard that information to /dev/null
$ time dd if=/dev/zero of=/dev/null bs=256M count=4
4+0 Datensätze ein
4+0 Datensätze aus
1073741824 Bytes (1,1 GB) kopiert, 0,426671 s, 2,5 GB/s
real 0m0.449s
user 0m0.000s
sys 0m0.405s
$ time dd if=/dev/zero of=/dev/null bs=256M count=4
4+0 Datensätze ein
4+0 Datensätze aus
1073741824 Bytes (1,1 GB) kopiert, 0,490546 s, 2,2 GB/s
real 0m0.514s
user 0m0.001s
sys 0m0.416s
$ time dd if=/dev/zero of=/dev/null bs=256M count=4
4+0 Datensätze ein
4+0 Datensätze aus
1073741824 Bytes (1,1 GB) kopiert, 0,492118 s, 2,2 GB/s
real 0m0.515s
user 0m0.001s
sys 0m0.404s
CPU: read from /dev/zero, zip that data and discard after on
$ apt-get install bzip2
$ bzip2 --version 2>&1 | head -n 1
bzip2, a block-sorting file compressor. Version 1.0.6, 6-Sept-2010.
$ time dd if=/dev/zero bs=256M count=4 | bzip2 > /dev/null
4+0 Datensätze ein
4+0 Datensätze aus
1073741824 Bytes (1,1 GB) kopiert, 30,1133 s, 35,7 MB/s
real 0m30.471s
user 0m21.101s
sys 0m1.764s
$ time dd if=/dev/zero bs=256M count=4 | bzip2 > /dev/null
4+0 Datensätze ein
4+0 Datensätze aus
1073741824 Bytes (1,1 GB) kopiert, 30,1732 s, 35,6 MB/s
real 0m30.530s
user 0m21.135s
sys 0m1.792s
$ time dd if=/dev/zero bs=256M count=4 | bzip2 > /dev/null
4+0 Datensätze ein
4+0 Datensätze aus
1073741824 Bytes (1,1 GB) kopiert, 30,1776 s, 35,6 MB/s
real 0m30.560s
user 0m21.300s
sys 0m1.632s
Hetzner - vServer VQ7 (March 2014)
Get the Distribution name
$ cat /etc/issue
Debian GNU/Linux 7 \n \l
Retrieve Kernel Version, Name, Arch
$ uname -a
Linux Debian-70-wheezy-64-minimal 3.2.0-4-amd64 #1 SMP Debian 3.2.54-2 x86_64 GNU/Linux
Fetch CPU-Information
$ cat /proc/cpuinfo | head -n 25
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 2
model name : QEMU Virtual CPU version 1.0
stepping : 3
microcode : 0x1
cpu MHz : 3400.022
cache size : 4096 KB
fpu : yes
fpu_exception : yes
cpuid level : 4
wp : yes
flags : fpu de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pse36 clflush mmx fxsr sse sse2 syscall nx lm up rep_good nopl pni vmx cx16 popcnt hypervisor lahf_lm
bogomips : 6800.04
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management:
Count the number of CPUs available
$ cat /proc/cpuinfo | grep processor | wc -l
1
Retrieve detailed Memory info
$ cat /proc/meminfo
MemTotal: 508924 kB
MemFree: 260964 kB
Buffers: 7708 kB
Cached: 209248 kB
SwapCached: 0 kB
Active: 124504 kB
Inactive: 99008 kB
Active(anon): 6592 kB
Inactive(anon): 116 kB
Active(file): 117912 kB
Inactive(file): 98892 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 4 kB
Writeback: 0 kB
AnonPages: 6584 kB
Mapped: 5184 kB
Shmem: 148 kB
Slab: 18140 kB
SReclaimable: 12564 kB
SUnreclaim: 5576 kB
KernelStack: 424 kB
PageTables: 1300 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 254460 kB
Committed_AS: 39912 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 1396 kB
VmallocChunk: 34359736719 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 34804 kB
DirectMap2M: 489472 kB
And basic memory overview
$ free -m
total used free shared buffers cached
Mem: 496 242 254 0 7 204
-/+ buffers/cache: 30 466
Swap: 0 0 0
What filesystems are mounted, what are their mountpoints and default options?
$ mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,relatime,size=10240k,nr_inodes=61923,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=50896k,mode=755)
/dev/disk/by-uuid/ac7addc9-53a7-4f7a-84a9-a89ccc1985b6 on / type ext3 (rw,relatime,errors=continue,user_xattr,acl,barrier=1,data=ordered)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /run/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=101780k)
/dev/vda1 on /boot type ext3 (rw,relatime,errors=continue,user_xattr,acl,barrier=1,data=ordered)
Retrieve disksizes and mountpoints
$ df -h
Filesystem Size Used Avail Use% Mounted on
rootfs 20G 823M 18G 5% /
udev 10M 0 10M 0% /dev
tmpfs 50M 144K 50M 1% /run
/dev/disk/by-uuid/ac7addc9-53a7-4f7a-84a9-a89ccc1985b6 20G 823M 18G 5% /
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 100M 0 100M 0% /run/shm
/dev/vda1 504M 40M 440M 9% /boot
List the contents of /dev
$ ls /dev
autofs fuse loop7 port stderr tty16 tty27 tty38 tty49 tty6 uinput vcsa3
block hpet loop-control ppp stdin tty17 tty28 tty39 tty5 tty60 urandom vcsa4
btrfs-control input MAKEDEV psaux stdout tty18 tty29 tty4 tty50 tty61 vcs vcsa5
bus kmsg mapper ptmx tty tty19 tty3 tty40 tty51 tty62 vcs1 vcsa6
char log mcelog pts tty0 tty2 tty30 tty41 tty52 tty63 vcs2 vda
console loop0 md random tty1 tty20 tty31 tty42 tty53 tty7 vcs3 vda1
core loop1 mem root tty10 tty21 tty32 tty43 tty54 tty8 vcs4 vda2
cpu loop2 net rtc tty11 tty22 tty33 tty44 tty55 tty9 vcs5 vga_arbiter
cpu_dma_latency loop3 network_latency rtc0 tty12 tty23 tty34 tty45 tty56 ttyS0 vcs6 xconsole
disk loop4 network_throughput shm tty13 tty24 tty35 tty46 tty57 ttyS1 vcsa zero
fd loop5 null snapshot tty14 tty25 tty36 tty47 tty58 ttyS2 vcsa1
full loop6 oldmem snd tty15 tty26 tty37 tty48 tty59 ttyS3 vcsa2
Fetch the fstab contents
$ cat /etc/fstab
proc /proc proc defaults 0 0
# /dev/vda1 during Installation (RescueSystem)
UUID=689b5bee-090f-4b99-9885-62eba0697baf /boot ext3 defaults 0 0
# /dev/vda2 during Installation (RescueSystem)
UUID=ac7addc9-53a7-4f7a-84a9-a89ccc1985b6 / ext3 defaults 0 0
How is the network-interface configuration
$ cat /etc/network/interfaces
### Hetzner Online AG - installimage
# Loopback device:
auto lo
iface lo inet loopback
# device: eth0
auto eth0
iface eth0 inet static
address xx.xx.xx.xx
broadcast xx.xx.xx.xx
netmask xx.xx.xx.xx
gateway xx.xx.xx.xx
# default route to access subnet
up route add -net xx.xx.xx.xx netmask xx.xx.xx.xx gw xx.xx.xx.xx eth0
iface eth0 inet6 static
address xx:xx:xx:xx::2
netmask 64
gateway xx:xx:xx:xx::1
What are the current ifconfig details?
$ ifconfig
eth0 Link encap:Ethernet HWaddr 00:1c:14:01:47:96
inet addr:xx.xx.xx.xx Bcast:xx.xx.xx.xx Mask:xx.xx.xx.xx
inet6 addr: xx::xx:xx:xx:xx/64 Scope:Link
inet6 addr: xxxxxxxxxxxx::x/64 Scope:Global
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:25065 errors:0 dropped:3 overruns:0 frame:0
TX packets:2691 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:26516639 (25.2 MiB) TX bytes:276527 (270.0 KiB)
Interrupt:10 Base address:0xa000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Make a simple sequential write test. 1GB file.
$ time dd if=/dev/zero of=/root/test.1g bs=256M count=4
4+0 records in
4+0 records out
1073741824 bytes (1.1 GB) copied, 18.8427 s, 57.0 MB/s
real 0m18.904s
user 0m0.000s
sys 0m3.420s
$ time dd if=/dev/zero of=/root/test.1g bs=256M count=4
4+0 records in
4+0 records out
1073741824 bytes (1.1 GB) copied, 17.1034 s, 62.8 MB/s
real 0m17.158s
user 0m0.000s
sys 0m1.312s
$ time dd if=/dev/zero of=/root/test.1g bs=256M count=4
4+0 records in
4+0 records out
1073741824 bytes (1.1 GB) copied, 17.1578 s, 62.6 MB/s
real 0m17.202s
user 0m0.000s
sys 0m1.256s
Make Disk Test using bonnie++. Use 256MB RAM and create a 2G file to be consistent over all hosts/servers and vServer constraints.
$ apt-get install bonnie
$ mkdir -p /home/croessler/bonnie-test
$ bonnie++ --get-me-the-version-please 2>&1 | tail -n 1
Version: 1.96
First run (2G Filesize, 256M Ram):
$ bonnie++ -d /home/croessler/bonnie-test/ -s 2g -r 256 -f -b -u root
Version 1.96 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
Debian-70-wheezy 2G 59716 6 44274 4 73953 3 420.3 9
Latency 520ms 574ms 125ms 315ms
Version 1.96 ------Sequential Create------ --------Random Create--------
Debian-70-wheezy-64 -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 1250 6 +++++ +++ 1409 4 1297 5 +++++ +++ 1455 4
Latency 87513us 638us 196ms 57826us 18us 66817us
First run results:
Hetzner | 2G File + 256M Ram
59716 KByte/s written sequentially
44274 KByte/s read and then written and flushed to the disk
73953 KByte/s sequential read
420.3 seeks/s random seeks
No second run here to utilize more ram. That machine just had 512M ram. I don’t expect the results to be that much different here.
CPU: Do a simple bruteforce calculation
$ time echo $((42**4242424242))
0
real 0m3.547s
user 0m3.612s
sys 0m0.000s
$ time echo $((42**4242424242))
0
real 0m3.611s
user 0m3.612s
sys 0m0.000s
$ time echo $((42**4242424242))
0
real 0m3.552s
user 0m3.548s
sys 0m0.000s
CPU: read from /dev/zero and discard that information to /dev/null
$ time dd if=/dev/zero of=/dev/null bs=256M count=4
4+0 records in
4+0 records out
1073741824 bytes (1.1 GB) copied, 0.201953 s, 5.3 GB/s
real 0m0.214s
user 0m0.000s
sys 0m0.188s
$ time dd if=/dev/zero of=/dev/null bs=256M count=4
4+0 records in
4+0 records out
1073741824 bytes (1.1 GB) copied, 0.174076 s, 6.2 GB/s
real 0m0.185s
user 0m0.000s
sys 0m0.180s
$ time dd if=/dev/zero of=/dev/null bs=256M count=4
4+0 records in
4+0 records out
1073741824 bytes (1.1 GB) copied, 0.174931 s, 6.1 GB/s
real 0m0.185s
user 0m0.000s
sys 0m0.184s
CPU: read from /dev/zero, zip that data and discard after on
$ apt-get install bzip2
$ bzip2 --version 2>&1 | head -n 1
bzip2, a block-sorting file compressor. Version 1.0.6, 6-Sept-2010.
$ time dd if=/dev/zero bs=256M count=4 | bzip2 > /dev/null
4+0 records in
4+0 records out
1073741824 bytes (1.1 GB) copied, 10.8888 s, 98.6 MB/s
real 0m10.995s
user 0m10.257s
sys 0m0.732s
$ time dd if=/dev/zero bs=256M count=4 | bzip2 > /dev/null
4+0 records in
4+0 records out
1073741824 bytes (1.1 GB) copied, 10.7271 s, 100 MB/s
real 0m10.857s
user 0m10.157s
sys 0m0.700s
$ time dd if=/dev/zero bs=256M count=4 | bzip2 > /dev/null
4+0 records in
4+0 records out
1073741824 bytes (1.1 GB) copied, 9.98964 s, 107 MB/s
real 0m10.089s
user 0m9.401s
sys 0m0.684s
$ time dd if=/dev/zero bs=256M count=4 | bzip2 > /dev/null
4+0 records in
4+0 records out
1073741824 bytes (1.1 GB) copied, 9.98811 s, 108 MB/s
real 0m10.090s
user 0m9.417s
sys 0m0.668s
$ time dd if=/dev/zero bs=256M count=4 | bzip2 > /dev/null
4+0 records in
4+0 records out
1073741824 bytes (1.1 GB) copied, 9.92397 s, 108 MB/s
real 0m10.026s
user 0m9.349s
sys 0m0.672s
$ time dd if=/dev/zero bs=256M count=4 | bzip2 > /dev/null
4+0 records in
4+0 records out
1073741824 bytes (1.1 GB) copied, 9.99608 s, 107 MB/s
real 0m10.100s
user 0m9.425s
sys 0m0.668s
DomainFactory JiffyBox 24h testsystem (March 2014 CloudLevel 1)
Get the Distribution name
$ cat /etc/issue
Debian GNU/Linux 7 \n \l
Retrieve Kernel Version, Name, Arch
$ uname -a
Linux jxxxxxx.servers.jiffybox.net 3.10.29-x86_64-jb1 #1 SMP Mon Feb 10 15:41:57 CET 2014 x86_64 GNU/Linux
Fetch CPU-Information
$ cat /proc/cpuinfo | head -n 19
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 62
model name : Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz
stepping : 4
microcode : 0x416
cpu MHz : 2099.998
cache size : 15360 KB
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu tsc msr pae cx8 cmov pat clflush mmx fxsr sse sse2 ss syscall nx lm constant_tsc rep_good nopl pni pclmulqdq vmx ssse3 cx16 sse4_1 sse4_2 popcnt aes avx f16c rdrand hypervisor lahf_lm tpr_shadow vnmi flexpriority ept vpid
bogomips : 4199.99
clflush size : 64
cache_alignment : 64
address sizes : 46 bits physical, 48 bits virtual
power management:
Count the number of CPUs available
$ cat /proc/cpuinfo | grep processor | wc -l
3
Retrieve detailed Memory info
$ cat /proc/meminfo
MemTotal: 2044164 kB
MemFree: 1568132 kB
Buffers: 20484 kB
Cached: 381948 kB
SwapCached: 0 kB
Active: 248512 kB
Inactive: 162452 kB
Active(anon): 8556 kB
Inactive(anon): 136 kB
Active(file): 239956 kB
Inactive(file): 162316 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 524284 kB
SwapFree: 524284 kB
Dirty: 292 kB
Writeback: 0 kB
AnonPages: 8544 kB
Mapped: 7952 kB
Shmem: 156 kB
Slab: 39296 kB
SReclaimable: 30032 kB
SUnreclaim: 9264 kB
KernelStack: 1120 kB
PageTables: 1124 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 1546364 kB
Committed_AS: 76460 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 6328 kB
VmallocChunk: 34359732031 kB
DirectMap4k: 2105344 kB
DirectMap2M: 0 kB
And basic memory overview
$ free -m
total used free shared buffers cached
Mem: 1996 464 1531 0 20 372
-/+ buffers/cache: 71 1924
Swap: 511 0 511
What filesystems are mounted, what are their mountpoints and default options?
$ mount
/dev/root on / type ext4 (rw,noatime,data=ordered)
devtmpfs on /dev type devtmpfs (rw,relatime,size=1021040k,nr_inodes=255260,mode=755)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=204420k,mode=755)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /run/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=513680k)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620)
Retrieve disksizes and mountpoints
$ df -h
Filesystem Size Used Avail Use% Mounted on
rootfs 25G 1.1G 22G 5% /
/dev/root 25G 1.1G 22G 5% /
devtmpfs 998M 0 998M 0% /dev
tmpfs 200M 152K 200M 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 502M 0 502M 0% /run/shm
List the contents of /dev
$ ls /dev
autofs nbd4 ptyc2 ptyp2 ptys2 ptyv2 ptyy2 shm tty48 ttybb ttyeb ttyrb ttyub ttyxb
block nbd5 ptyc3 ptyp3 ptys3 ptyv3 ptyy3 stderr tty49 ttybc ttyec ttyrc ttyuc ttyxc
btrfs-control nbd6 ptyc4 ptyp4 ptys4 ptyv4 ptyy4 stdin tty5 ttybd ttyed ttyrd ttyud ttyxd
char nbd7 ptyc5 ptyp5 ptys5 ptyv5 ptyy5 stdout tty50 ttybe ttyee ttyre ttyue ttyxe
console nbd8 ptyc6 ptyp6 ptys6 ptyv6 ptyy6 tty tty51 ttybf ttyef ttyrf ttyuf ttyxf
core nbd9 ptyc7 ptyp7 ptys7 ptyv7 ptyy7 tty0 tty52 ttyc0 ttyp0 ttys0 ttyv0 ttyy0
cpu_dma_latency net ptyc8 ptyp8 ptys8 ptyv8 ptyy8 tty1 tty53 ttyc1 ttyp1 ttys1 ttyv1 ttyy1
disk network_latency ptyc9 ptyp9 ptys9 ptyv9 ptyy9 tty10 tty54 ttyc2 ttyp2 ttys2 ttyv2 ttyy2
dlm-control network_throughput ptyca ptypa ptysa ptyva ptyya tty11 tty55 ttyc3 ttyp3 ttys3 ttyv3 ttyy3
dlm-monitor null ptycb ptypb ptysb ptyvb ptyyb tty12 tty56 ttyc4 ttyp4 ttys4 ttyv4 ttyy4
dlm_plock ppp ptycc ptypc ptysc ptyvc ptyyc tty13 tty57 ttyc5 ttyp5 ttys5 ttyv5 ttyy5
fd psaux ptycd ptypd ptysd ptyvd ptyyd tty14 tty58 ttyc6 ttyp6 ttys6 ttyv6 ttyy6
full ptmx ptyce ptype ptyse ptyve ptyye tty15 tty59 ttyc7 ttyp7 ttys7 ttyv7 ttyy7
fuse pts ptycf ptypf ptysf ptyvf ptyyf tty16 tty6 ttyc8 ttyp8 ttys8 ttyv8 ttyy8
hvc0 ptya0 ptyd0 ptyq0 ptyt0 ptyw0 ptyz0 tty17 tty60 ttyc9 ttyp9 ttys9 ttyv9 ttyy9
hvc1 ptya1 ptyd1 ptyq1 ptyt1 ptyw1 ptyz1 tty18 tty61 ttyca ttypa ttysa ttyva ttyya
hvc2 ptya2 ptyd2 ptyq2 ptyt2 ptyw2 ptyz2 tty19 tty62 ttycb ttypb ttysb ttyvb ttyyb
hvc3 ptya3 ptyd3 ptyq3 ptyt3 ptyw3 ptyz3 tty2 tty63 ttycc ttypc ttysc ttyvc ttyyc
hvc4 ptya4 ptyd4 ptyq4 ptyt4 ptyw4 ptyz4 tty20 tty7 ttycd ttypd ttysd ttyvd ttyyd
hvc5 ptya5 ptyd5 ptyq5 ptyt5 ptyw5 ptyz5 tty21 tty8 ttyce ttype ttyse ttyve ttyye
hvc6 ptya6 ptyd6 ptyq6 ptyt6 ptyw6 ptyz6 tty22 tty9 ttycf ttypf ttysf ttyvf ttyyf
hvc7 ptya7 ptyd7 ptyq7 ptyt7 ptyw7 ptyz7 tty23 ttya0 ttyd0 ttyq0 ttyt0 ttyw0 ttyz0
input ptya8 ptyd8 ptyq8 ptyt8 ptyw8 ptyz8 tty24 ttya1 ttyd1 ttyq1 ttyt1 ttyw1 ttyz1
kmsg ptya9 ptyd9 ptyq9 ptyt9 ptyw9 ptyz9 tty25 ttya2 ttyd2 ttyq2 ttyt2 ttyw2 ttyz2
log ptyaa ptyda ptyqa ptyta ptywa ptyza tty26 ttya3 ttyd3 ttyq3 ttyt3 ttyw3 ttyz3
loop0 ptyab ptydb ptyqb ptytb ptywb ptyzb tty27 ttya4 ttyd4 ttyq4 ttyt4 ttyw4 ttyz4
loop1 ptyac ptydc ptyqc ptytc ptywc ptyzc tty28 ttya5 ttyd5 ttyq5 ttyt5 ttyw5 ttyz5
loop2 ptyad ptydd ptyqd ptytd ptywd ptyzd tty29 ttya6 ttyd6 ttyq6 ttyt6 ttyw6 ttyz6
loop3 ptyae ptyde ptyqe ptyte ptywe ptyze tty3 ttya7 ttyd7 ttyq7 ttyt7 ttyw7 ttyz7
loop4 ptyaf ptydf ptyqf ptytf ptywf ptyzf tty30 ttya8 ttyd8 ttyq8 ttyt8 ttyw8 ttyz8
loop5 ptyb0 ptye0 ptyr0 ptyu0 ptyx0 ram0 tty31 ttya9 ttyd9 ttyq9 ttyt9 ttyw9 ttyz9
loop6 ptyb1 ptye1 ptyr1 ptyu1 ptyx1 ram1 tty32 ttyaa ttyda ttyqa ttyta ttywa ttyza
loop7 ptyb2 ptye2 ptyr2 ptyu2 ptyx2 ram10 tty33 ttyab ttydb ttyqb ttytb ttywb ttyzb
loop-control ptyb3 ptye3 ptyr3 ptyu3 ptyx3 ram11 tty34 ttyac ttydc ttyqc ttytc ttywc ttyzc
MAKEDEV ptyb4 ptye4 ptyr4 ptyu4 ptyx4 ram12 tty35 ttyad ttydd ttyqd ttytd ttywd ttyzd
mapper ptyb5 ptye5 ptyr5 ptyu5 ptyx5 ram13 tty36 ttyae ttyde ttyqe ttyte ttywe ttyze
md0 ptyb6 ptye6 ptyr6 ptyu6 ptyx6 ram14 tty37 ttyaf ttydf ttyqf ttytf ttywf ttyzf
mem ptyb7 ptye7 ptyr7 ptyu7 ptyx7 ram15 tty38 ttyb0 ttye0 ttyr0 ttyu0 ttyx0 urandom
nbd0 ptyb8 ptye8 ptyr8 ptyu8 ptyx8 ram2 tty39 ttyb1 ttye1 ttyr1 ttyu1 ttyx1 vcs
nbd1 ptyb9 ptye9 ptyr9 ptyu9 ptyx9 ram3 tty4 ttyb2 ttye2 ttyr2 ttyu2 ttyx2 vcs1
nbd10 ptyba ptyea ptyra ptyua ptyxa ram4 tty40 ttyb3 ttye3 ttyr3 ttyu3 ttyx3 vcsa
nbd11 ptybb ptyeb ptyrb ptyub ptyxb ram5 tty41 ttyb4 ttye4 ttyr4 ttyu4 ttyx4 vcsa1
nbd12 ptybc ptyec ptyrc ptyuc ptyxc ram6 tty42 ttyb5 ttye5 ttyr5 ttyu5 ttyx5 xconsole
nbd13 ptybd ptyed ptyrd ptyud ptyxd ram7 tty43 ttyb6 ttye6 ttyr6 ttyu6 ttyx6 xen
nbd14 ptybe ptyee ptyre ptyue ptyxe ram8 tty44 ttyb7 ttye7 ttyr7 ttyu7 ttyx7 xvda
nbd15 ptybf ptyef ptyrf ptyuf ptyxf ram9 tty45 ttyb8 ttye8 ttyr8 ttyu8 ttyx8 xvdb
nbd2 ptyc0 ptyp0 ptys0 ptyv0 ptyy0 random tty46 ttyb9 ttye9 ttyr9 ttyu9 ttyx9 zero
nbd3 ptyc1 ptyp1 ptys1 ptyv1 ptyy1 root tty47 ttyba ttyea ttyra ttyua ttyxa
Fetch the fstab contents
$ cat /etc/fstab
# editor /etc/fstab
# /etc/fstab: static file system information.
#
# file system mount point type options dump pass
/dev/xvda / ext4 noatime 0 1
/dev/xvdb none swap sw 0 0
proc /proc proc defaults 0 0
How is the network-interface configuration
$ cat /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
What are the current ifconfig details?
$ ifconfig
eth0 Link encap:Ethernet HWaddr 00:16:3e:01:5f:d1
inet addr:xx.xx.xx.xx Bcast:xx.xx.xx.xx Mask:255.255.255.0
inet6 addr: xxxxxxxxxxxxxxxxxxx/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:40200 errors:0 dropped:0 overruns:0 frame:0
TX packets:18148 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:56518770 (53.9 MiB) TX bytes:1320466 (1.2 MiB)
Interrupt:41
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Make a simple sequential write test. 1GB file.
$ time dd if=/dev/zero of=/root/test.1g bs=256M count=4
4+0 records in
4+0 records out
1073741824 bytes (1.1 GB) copied, 1.5576 s, 689 MB/s
real 0m1.579s
user 0m0.004s
sys 0m1.570s
$ time dd if=/dev/zero of=/root/test.1g bs=256M count=4
4+0 records in
4+0 records out
1073741824 bytes (1.1 GB) copied, 1.57286 s, 683 MB/s
real 0m1.770s
user 0m0.000s
sys 0m1.704s
$ time dd if=/dev/zero of=/root/test.1g bs=256M count=4
4+0 records in
4+0 records out
1073741824 bytes (1.1 GB) copied, 1.60242 s, 670 MB/s
real 0m1.801s
user 0m0.003s
sys 0m1.725s
Make Disk Test using bonnie++. Use 256MB RAM and create a 2G file to be consistent over all hosts/servers and vServer constraints.
$ apt-get install bonnie
$ mkdir -p /home/croessler/bonnie-test
$ bonnie++ --get-me-the-version-please 2>&1 | tail -n 1
Version: 1.96
First run (2G Filesize, 256M Ram)
$ bonnie++ -d /home/croessler/bonnie-test/ -s 2g -r 256 -f -b -u root
Version 1.96 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
jxxxxx.servers.j 2G 550647 99 335114 72 933367 78 12831 178
Latency 11533us 9464us 28805us 11938us
Version 1.96 ------Sequential Create------ --------Random Create--------
jxxxxx.servers.jiff -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 1997 22 +++++ +++ 2238 20 1975 23 +++++ +++ 2196 22
Latency 3545us 414us 17127us 8306us 17us 8796us
First run results:
DomainFactory | 2G File + 256M Ram
550647 KByte/s written sequentially
335114 KByte/s read and then written and flushed to the disk
933367 KByte/s sequential read
12831 seeks/s random seeks
Sequential read over 930MB/s is due to the fact that the test-file fit into Ram. Nevertheless that 24h test-server is blazingly fast. I assume there is a writecache involved here and/or SSDs as Disk.
Second run (8G filesize, 2G Ram)
$bonnie++ -d /home/croessler/bonnie-test/ -s 8g -r 2g -f -b -u root
Version 1.96 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
jxxxxx.servers.j 8G 524482 99 324213 72 757685 81 9765 273
Latency 24059us 24494us 29477us 8122us
Version 1.96 ------Sequential Create------ --------Random Create--------
jxxxxx.servers.jiff -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 1935 23 +++++ +++ 2171 23 2010 24 +++++ +++ 2215 22
Latency 3509us 465us 12351us 1233us 50us 18831us
Second run results:
DomainFactory | 8G File + 2G Ram
524482 KByte/s written sequentially
324213 KByte/s read and then written and flushed to the disk
757685 KByte/s sequential read
9765 seeks/s random seeks
Sequential read is slower now as the File does not fit in RAM anymore. This 24h testserver still is fastest. I bet there is an SSD used.
Third run (16G filesize, 4G Ram)
$bonnie++ -d /home/croessler/bonnie-test/ -s 16g -r 4g -f -b -u root
Version 1.96 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
jxxxxx.servers. 16G 504667 97 297856 67 746612 83 8627 261
Latency 62824us 35660us 32911us 6486us
Version 1.96 ------Sequential Create------ --------Random Create--------
jxxxxx.servers.jiff -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 2049 23 +++++ +++ 2223 22 2035 22 +++++ +++ 2131 22
Latency 2701us 425us 1186us 20401us 113us 1260us
Third run results:
DomainFactory | 16G File + 4G Ram
504667 KByte/s written sequentially
297856 KByte/s read and then written and flushed to the disk
746612 KByte/s sequential read
8627 seeks/s random seeks
Again great performance! Writecache and perhaps SSDs.
CPU: Do a simple bruteforce calculation
$ time echo $((42**4242424242))
0
real 0m6.109s
user 0m6.105s
sys 0m0.000s
$ time echo $((42**4242424242))
0
real 0m6.100s
user 0m6.101s
sys 0m0.000s
$ time echo $((42**4242424242))
0
real 0m6.101s
user 0m6.102s
sys 0m0.000s
CPU: read from /dev/zero and discard that information to /dev/null
$ time dd if=/dev/zero of=/dev/null bs=256M count=4
4+0 records in
4+0 records out
1073741824 bytes (1.1 GB) copied, 0.402004 s, 2.7 GB/s
real 0m0.446s
user 0m0.002s
sys 0m0.424s
$ time dd if=/dev/zero of=/dev/null bs=256M count=4
4+0 records in
4+0 records out
1073741824 bytes (1.1 GB) copied, 0.424445 s, 2.5 GB/s
real 0m0.446s
user 0m0.002s
sys 0m0.443s
$ time dd if=/dev/zero of=/dev/null bs=256M count=4
4+0 records in
4+0 records out
1073741824 bytes (1.1 GB) copied, 0.416605 s, 2.6 GB/s
real 0m0.438s
user 0m0.000s
sys 0m0.438s
CPU: read from /dev/zero, zip that data and discard after on
$ apt-get install bzip2
$ bzip2 --version 2>&1 | head -n 1
bzip2, a block-sorting file compressor. Version 1.0.6, 6-Sept-2010.
$ time dd if=/dev/zero bs=256M count=4 | bzip2 > /dev/null
4+0 records in
4+0 records out
1073741824 bytes (1.1 GB) copied, 17.8011 s, 60.3 MB/s
real 0m17.962s
user 0m15.928s
sys 0m5.599s
$ time dd if=/dev/zero bs=256M count=4 | bzip2 > /dev/null
4+0 records in
4+0 records out
1073741824 bytes (1.1 GB) copied, 17.8485 s, 60.2 MB/s
real 0m18.008s
user 0m15.919s
sys 0m5.910s
$ time dd if=/dev/zero bs=256M count=4 | bzip2 > /dev/null
4+0 records in
4+0 records out
1073741824 bytes (1.1 GB) copied, 17.6505 s, 60.8 MB/s
real 0m17.810s
user 0m15.918s
sys 0m5.241s