Re: How can I boost block I/O performance

From: Dave Pitts
Date: Mon May 08 2006 - 11:38:16 EST


Avi Kivity wrote:

Dave Pitts wrote:

Avi Kivity wrote:

Dave Pitts wrote:


procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
4 0 720 80252 1820 7077456 0 0 9 852 5 11 1 14 84 0


[...]

5 0 720 90364 1860 7067080 0 0 40 66956 17995 95384 0 17 82 0

This test is running several NFS clients to a RAID disk storage array. I also see the
same behavior when running SFTP transfers. What I'd like is a more even block
out behavior (even at the expense of other apps as this is a file server not an app
server). The values that I've been hacking are the dirty_writeback_centisecs,
dirty_background_ratio, etc. Am I barking up the wrong tree?


No iowait time, plenty of idle time: looks like you are network bound. What time of network are you running?

Well, it's an 8 cpu system. Does the idle time reflect the idle time of all cpu's?


It's an average across all cpus. But the numbers are low even for a single cpu system.

OK, I ran some tests, bypassing NFS, and got the following vmstat display:

procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
4 1 696 80692 844 7225424 0 0 92 263924 14380 6176 2 40 46 12
6 0 696 108668 784 7200936 0 0 456 6444 30515 20641 3 57 36 3
5 1 696 100916 768 7211220 0 0 508 97276 31761 19916 3 65 27 4
7 0 700 91188 764 7217340 0 0 428 121576 28704 21957 3 69 24 3
3 3 700 103356 780 7204472 0 0 408 121748 29513 22603 3 66 23 8
7 0 700 92836 780 7216168 0 0 360 43508 28784 21410 3 54 33 11
7 0 700 88364 768 7224272 0 0 296 158236 26530 17570 3 66 21 10
10 0 700 91068 776 7219096 0 0 444 141456 30306 16053 3 74 16 7
5 2 700 102212 752 7206676 0 0 340 170076 29249 14872 2 69 19 10
11 0 700 87884 768 7222096 0 0 392 143312 29743 19808 1 65 23 11
8 0 700 104692 744 7204644 0 0 240 159624 25814 18747 3 58 20 19
9 0 700 107196 736 7205196 0 0 344 148500 28191 18113 3 70 21 6
16 1 700 99300 768 7211364 0 12 464 164348 25671 18326 4 64 18 15
5 4 700 107412 1052 7204824 0 0 936 170904 28994 17062 3 73 11 14
8 1 700 98892 1284 7217512 0 0 596 182708 31520 18424 1 76 13 10

This ia with 6 concurrent data streams. In addition to the /proc/sys/vm/dirty* values I also adjusted
values in mm/page-writeback.c eg. MAX_WRITEBACK_PAGES to 8192 . Our goal is to blast out
as much as possible per pdflush invocation.


The network is a Gigabit Ethernet.


I'd make sure the nics know that by running ethtool (on the clients as well as on the server).





--
Dave Pitts PULLMAN: Travel and sleep in safety and comfort.
dpitts@xxxxxxxx My other RV IS a Pullman (Colorado Pine).
http://www.cozx.com/~dpitts

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/