LVM and VxVM

Test read IO of filesystem using dd

Occasional Contributor

Test read IO of filesystem using dd


We are planning to upgrade our VXFS from disk layout 4 to 6 and prior to the upgrade in production we simulate the upgrade in development server. After the upgrade we compared the batch job that we ran before the upgrade and found the performance degrade by 4-8%. I took the following approach to test the FS performance.

I test the read performance of VXFS (different disk layout, 4/5/6) using dd. I use a 2GB file as the input file and ran the following CMD. The start & end time are the same for the 3 disk layout.

dd if=/xxx/yyy/filename.log of=/dev/null

I need some feedback if this test was sufficient to justify that the issue was not with the upgrade (FS) since the read performance is the same.
Steven Schweda
Honored Contributor

Re: Test read IO of filesystem using dd

> [...] we compared the batch job [...]

> I test the read performance [...]

Does your batch job do nothing except read a
2GB file? (And throw the data away?)

Your test seems unlikely to be much like any
actual job, so I don't see that you have
proved very much. If the real job is much
different from the test job, then what does
the test tell you?

I'd want to know where the batch job was
spending its time (before and after the
changes), how much I/O it was doing, and so
Occasional Contributor

Re: Test read IO of filesystem using dd

The batch job reads multiple records from oracle database server does some formatting and writes to application server. The JFS upgrade was performed on the DB server only.

The IO during the job durations are as follow.

Before upgrade
Average IO Rate = 774.46
Average Logical IO Rate = 2572.55

After upgrade
Average IO Rate = 922.97
Average Logical IO Rate = 2528.14

Bill Hassell
Honored Contributor

Re: Test read IO of filesystem using dd

> dd if=/xxx/yyy/filename.log of=/dev/null

This is about the worst use of dd there is. The default for dd is to read one 512-byte record and write that same 512-byte record. ALWAYS specify the bs= parameter to a reasonable size, for instance: bs=512k. You will see a huge improvement in performance.

Aside from reading very small records (which really emphasizes system overhead), it won't test the filesystem layout/version. VxFS code spends most all of it's activity with open,close, add/delete/move but once a file is open, there is no significant interaction with the VxFS code -- the file is open and reads just continue. The layout version has a lot to do with internal record keeping and sizes of fields.

A better test would be to create dozens of files simultaneously, write a few records, then lseek a long way from the start, write a few more, close and then remove the files. This will likely show more of the VxFS performance differences than a simple read.

Bill Hassell, sysadmin