Skip to main content

Disk Alignment and perf testing in Linux

It should be noted that I am JUST starting to educate myself on testing performance of disks.  Do NOT assume that what I am doing here is the work of someone that actually knows about this topic.

I decided that Bonnie (or Bonnie++ more accurately) would be the tool I use, in addition to benchmarking a mkfs and dd of /dev/zero.

    wget http://www.coker.com.au/bonnie++/bonnie++-1.03e.tgz
    tar -xvzf bonnie++-1.03e.tgz
    cd bonnie++-1.03e
    ./configure
    make && make install

On my system I have 2 LUNs from the same array.  I am assuming they are on the same, or similar, RAID Parity Groups on the Array. 

My concern is that a misaligned partition table and partitions would have a noticeable performance impact.

[root@dvgllprhvsrv91 sysadmin]# parted -s /dev/dm-6 mklabel msdos mkpart primary ext3 2048s 100%
[root@dvgllprhvsrv91 sysadmin]# parted -s /dev/dm-5 mklabel msdos mkpart primary ext3 0 100%
Warning: The resulting partition is not properly aligned for best performance.

Test 1 -- dm-6 (aligned), dm-5 (not-aligned)

Once I added the partition I ended up with the following diskmapper devices:
dm-6 -> dm-14 (aligned)
dm-5 -> dm-15 (not-aligned)

I mounted them as /dev/dm-14 and /dev/dm-15 (respectively).

[root@dvgllprhvsrv91 sysadmin]# time mkfs /dev/dm-14
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
3276800 inodes, 13106944 blocks
655347 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
400 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
    4096000, 7962624, 11239424

Writing inode tables: done                           
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 30 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

real    0m3.836s
user    0m0.016s
sys    0m1.087s

[root@dvgllprhvsrv91 sysadmin]# time mkfs /dev/dm-15
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
3276800 inodes, 13107199 blocks
655359 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
400 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
    4096000, 7962624, 11239424

Writing inode tables: done                           
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 26 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

real    0m5.537s
user    0m0.010s
sys    0m5.017s

[root@dvgllprhvsrv91 sysadmin]# dd if=/dev/zero of=/mnt/dm-14/test bs=512 count=3072000
3072000+0 records in
3072000+0 records out
1572864000 bytes (1.6 GB) copied, 4.40712 s, 357 MB/s

[root@dvgllprhvsrv91 sysadmin]# dd if=/dev/zero of=/mnt/dm-15/test bs=512 count=3072000
3072000+0 records in
3072000+0 records out
1572864000 bytes (1.6 GB) copied, 4.41995 s, 356 MB/s

[root@dvgllprhvsrv91 bonnie++-1.03e]# bonnie++ -d /mnt/dm-14/ -s 2g -r1g -n 0 -m localhost -f -b -u root
Using uid:0, gid:0.
Writing intelligently...done
Rewriting...done
Reading intelligently...done
start 'em...done...done...done...
Version 1.03e       ------Sequential Output------ --Sequential Input- --Random-
                    -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
localhost        2G           262728  26 267633  20           2287646 100 +++++ +++
localhost,2G,,,262728,26,267633,20,,,2287646,100,+++++,+++,,,,,,,,,,,,,

[root@dvgllprhvsrv91 bonnie++-1.03e]# bonnie++ -d /mnt/dm-15/ -s 2g -r1g -n 0 -m localhost -f -b -u root
Using uid:0, gid:0.
Writing intelligently...done
Rewriting...done
Reading intelligently...done
start 'em...done...done...done...
Version 1.03e       ------Sequential Output------ --Sequential Input- --Random-
                    -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
localhost        2G           243774  25 243384  20           2359965  99 +++++ +++
localhost,2G,,,243774,25,243384,20,,,2359965,99,+++++,+++,,,,,,,,,,,,,





Comments

Popular posts from this blog

RHN Satellite Server (spacewalk) repomd.xml not found

"repomd.xml not found" If you add a channel, or if your RHN cache gets corrupted, and one of your guests complains that it cannot find repomd.xml for jb-ews-2-x86_64-server-5-rpm (for example) - you need to rebuild your repodata cache. Normally this is an automated job - which is exemplified by the fact that you have obviously built out your entire Satellite environment and never had to do any of the steps you are about to do. So - some prep work: Open 3 terminals to your Satellite Server and run: # Term 1 cd /var/cache/rhn watch "ls -l | wc -l" # Term 2 pwd cd /var/log/rhn tail -f rhn_taskomatic_daemon.log # Term 3 satellite-sync --channel=jb-ews-2-x86_64-server-5-rpm Once the satellite-sync has completed, you >should< see the count increment by one.  If you are unlucky (like me) you will not. You then need to login to the Satellite WebUI as the satellite admin user. Click on the Admin tab (at the top) Task Schedules (on the left) fin

Install RHEL 7 on old HP DL380 g5

Someone at work had been running RHEL on an HP DL380 G5 and blew it up.  After several attempts at doing an installation that made me conclude the hardware was actually bad... I kept digging for the answer. Attempt install and Anaconda could not find any disks - try a Drivers Disk (dd.img) both cciss and hpsa.   -- once we did that, when the system would reboot it would say it could not find a disk. hmmm. Boot from your installation media and interrupt the startup at grub. Add hpsa.hpsa_allow_any=1 hpsa.hpsa_simple_mode=1 to the line starting with linuxefi press CTRL-X to boot. Once the system restarts after the install, you need to once again interrupt the startup and add the line from above. After the system starts, edit /etc/default/grub and add those 2 parameters to the end of the line starting with GRUB_CMDLINE_LINUX (which likely has quiet at the end of the line currently). then run # cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.orig # grub2-mkconfig -o /boot/grub2

MOTD with colors! (also applies to shell profiles)

I'm not sure why I had never looked into this before, but this evening I became obsessed with discovering how to present different colored text in the /etc/motd. A person had suggested creating a shell script (rather than using special editing modes in vi, or something) and I agree that is the simplest way of getting this accomplished quickly. This most noteworthy portion of this script is the following: RESET="\033[0m" that puts the users shell back to the original color. I typically like a green text on black background. Also - a great reference for the different colors and font-type (underscore, etc...) https://wiki.archlinux.org/index.php/Color_Bash_Prompt I found this example on the web and I wish I could recall where so that I could provide credit to that person. #!/bin/bash #define the filename to use as output motd="/etc/motd" # Collect useful information about your system # $USER is automatically defined HOSTNAME=`uname -n` KERNEL=`un