[RFC PATCH 0/1] nfsd: Improve NFS server performance

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Krishna Kumar <krkumar2@xxxxxxxxxx>

Patch summary:
--------------
Change the readahead caching on the server to a file handle caching model.
Since file handles are unique, this patch removes all dependencies on the
kernel readahead parameters/implementation and instead caches files based
on file handles. This change allows the server to not have to open/close
a file multiple times when the client reads it, and results in faster lookup
times. Also, readahead is automatically taken care of since the file is not
closed while it is getting read (quickly) by the client.


Read algo change:
------------------
The new nfsd_read() is changed to:
	if file {
		Old code
	} else {
		Check if this FH is cached
		if fh && fh has cached file pointer:
			Get file pointer
			Update fields in fhp from cache
			call fh_verify
		else:
			Nothing in the cache, call nfsd_open as usual

		nfsd_vfs_read

		if fh {
			If this is a new fh entry:
				Save cached values
			Drop our reference to fh
		} else
			Close file
	}


Performance:
-------------
This patch was tested with clients running 1, 4, 8, 16 --- 256 test processes,
each doing reads of different files. Each test includes different I/O sizes.
Many individual tests (16% of test cases) got throughput improvement in the
9 to 15% range. The full results are provided at the end of this post.

Please review. Any comments or improvement ideas are greatly appreciated.

Signed-off-by: Krishna Kumar <krkumar2@xxxxxxxxxx>
---

		(#Test Processes on Client == #NFSD's on Server)
--------------------------------------------------------------
#Test Processes		Org BW KB/s	New BW KB/s	%
--------------------------------------------------------------
4	256		48151.09	50328.70	4.52
4	4096		47700.05	49760.34	4.31
4	8192		47553.34	48509.00	2.00
4	16384		48764.87	51208.54	5.01
4	32768		49306.11	50141.59	1.69
4	65536		48681.46	49491.32	1.66
4	131072		48378.02	49971.95	3.29

8	256		38906.95	42444.95	9.09
8	4096		38141.46	42154.24	10.52
8	8192		37058.55	41241.78	11.28
8	16384		37446.56	40573.70	8.35
8	32768		36655.91	42159.85	15.01
8	65536		38776.11	40619.20	4.75
8	131072		38187.85	41119.04	7.67

16	256		36274.49	36143.00	-0.36
16	4096		34320.56	37664.35	9.74
16	8192		35489.65	34555.43	-2.63
16	16384		35647.32	36289.72	1.80
16	32768		37037.31	36874.33	-0.44
16	65536		36388.14	36991.56	1.65
16	131072		35729.34	37588.85	5.20

32	256		30838.89	32811.47	6.39
32	4096		31291.93	33439.83	6.86
32	8192		29885.57	33337.10	11.54
32	16384		30020.23	31795.97	5.91
32	32768		32805.03	33860.68	3.21
32	65536		31275.12	32997.34	5.50
32	131072		33391.85	34209.86	2.44

64	256		26729.46	28077.13	5.04
64	4096		25705.01	27339.37	6.35
64	8192		27757.06	27488.04	-0.96
64	16384		22927.44	23938.79	4.41
64	32768		26956.16	27848.52	3.31
64	65536		27419.59	29228.76	6.59
64	131072		27623.29	27651.99	.10

128	256		22463.63	22437.45	-.11
128	4096		22039.69	22554.03	2.33
128	8192		22218.42	24010.64	8.06
128	16384		15295.59	16745.28	9.47
128	32768		23319.54	23450.46	0.56
128	65536		22942.03	24169.26	5.34
128	131072		23845.27	23894.14	0.20

256	256		15659.17	16266.38	3.87
256	4096		15614.72	16362.25	4.78
256	8192		16950.24	17092.50	0.83
256	16384		9253.25		10274.28	11.03
256	32768		17872.89	17792.93	-.44
256	65536		18459.78	18641.68	0.98
256	131072		19408.01	20538.80	5.82
--------------------------------------------------------------
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux