From Linux NFS
36: Linux 2.6.36
36NORC: Linux 2.6.36 (without readdir cap)
38: Linux 2.6.38
38RC: Linux 2.6.38 (with readdir cap added back)
38NB: Linux 2.6.38 (with Neil Brown's patch and loop detection)
100 Files
=========
time ls -f --color=none /nfs/test/dir.100 > ls.txt
kernel | 36 | 36NORC | 38 | 38RC | 38NB
--------+----------+----------+----------+----------+----------
real | 0m0.013s | 0m0.057s | 0m0.082s | 0m0.022s | 0m0.014s
user | 0m0.000s | 0m0.003s | 0m0.003s | 0m0.003s | 0m0.000s
sys | 0m0.007s | 0m0.007s | 0m0.060s | 0m0.013s | 0m0.010s
access | 3 | 3 | 3 | 3 | 3
getattr | 1 | 1 | 1 | 1 | 1
lookup | 2 | 2 | 2 | 2 | 2
readdir | 2 | 2 | 2 | 2 | 2
time ls -lU --color=none /nfs/test/dir.100 > ls.txt
kernel | 36 | 36NORC | 38 | 38RC | 38NB
--------+----------+----------+----------+----------+----------
real | 0m0.040s | 0m0.136s | 0m0.057s | 0m0.036s | 0m0.035s
user | 0m0.003s | 0m0.010s | 0m0.000s | 0m0.007s | 0m0.007s
sys | 0m0.010s | 0m0.020s | 0m0.017s | 0m0.027s | 0m0.027s
access | 3 | 3 | 3 | 3 | 3
getattr | 1 | 1 | 1 | 1 | 1
lookup | 102 | 102 | 102 | 102 | 102
readdir | 2 | 2 | 2 | 2 | 2
time ls -U --color=none /nfs/test/dir.100 > ls.txt
kernel | 36 | 36NORC | 38 | 38RC | 38NB
--------+----------+----------+----------+----------+----------
real | 0m0.077s | 0m0.014s | 0m0.023s | 0m0.041s | 0m0.013s
user | 0m0.000s | 0m0.003s | 0m0.000s | 0m0.003s | 0m0.007s
sys | 0m0.007s | 0m0.007s | 0m0.010s | 0m0.033s | 0m0.007s
access | 3 | 3 | 3 | 3 | 3
getattr | 1 | 1 | 1 | 1 | 1
lookup | 2 | 2 | 2 | 2 | 2
readdir | 2 | 2 | 2 | 2 | 2
time rm -rf /nfs/test/dir.100 > ls.txt
kernel | 36 | 36NORC | 38 | 38RC | 38NB
--------+----------+----------+----------+----------+----------
real | 0m0.037s | 0m0.037s | 0m0.042s | 0m0.751s | 0m0.042s
user | 0m0.000s | 0m0.000s | 0m0.003s | 0m0.007s | 0m0.000s
sys | 0m0.013s | 0m0.017s | 0m0.027s | 0m0.010s | 0m0.027s
access | 11 | 12 | 13 | 11 | 12
getattr | 1 | 1 | 1 | 1 | 1
lookup | 102 | 102 | 102 | 102 | 102
remove | 101 | 101 | 101 | 101 | 101
statfs | 1 | 1 | 1 | 1 | 1
readdir | 2 | 2 | 2 | 2 | 2
1,000 Files
===========
time ls -f --color=none /nfs/test/dir.1000 > ls.txt
kernel | 36 | 36NORC | 38 | 38RC | 38NB
--------+----------+----------+----------+----------+----------
real | 0m0.016s | 0m0.056s | 0m0.041s | 0m0.022s | 0m0.022s
user | 0m0.003s | 0m0.000s | 0m0.003s | 0m0.003s | 0m0.000s
sys | 0m0.003s | 0m0.020s | 0m0.003s | 0m0.013s | 0m0.013s
access | 3 | 3 | 3 | 3 | 3
getattr | 1 | 1 | 1 | 1 | 1
lookup | 2 | 2 | 2 | 2 | 2
readdir | 13 | 13 | 20 | 20 | 20
time ls -lU --color=none /nfs/test/dir.1000 > ls.txt
kernel | 36 | 36NORC | 38 | 38RC | 38NB
--------+----------+----------+----------+----------+----------
real | 0m0.163s | 0m0.237s | 0m0.176s | 0m0.178s | 0m0.174s
user | 0m0.017s | 0m0.010s | 0m0.010s | 0m0.013s | 0m0.007s
sys | 0m0.060s | 0m0.167s | 0m0.057s | 0m0.113s | 0m0.117s
access | 3 | 3 | 3 | 3 | 3
getattr | 1 | 1 | 1 | 1 | 1
lookup | 1002 | 1002 | 1002 | 1002 | 1002
readdir | 12 | 13 | 20 | 20 | 20
time ls -U --color=none /nfs/test/dir.1000 > ls.txt
kernel | 36 | 36NORC | 38 | 38RC | 38NB
--------+----------+----------+----------+----------+----------
real | 0m0.069s | 0m0.033s | 0m0.030s | 0m0.022s | 0m0.023s
user | 0m0.000s | 0m0.003s | 0m0.000s | 0m0.000s | 0m0.003s
sys | 0m0.007s | 0m0.023s | 0m0.010s | 0m0.017s | 0m0.013s
access | 3 | 3 | 3 | 3 | 3
getattr | 1 | 1 | 1 | 1 | 1
lookup | 2 | 2 | 2 | 2 | 2
readdir | 13 | 13 | 20 | 20 | 20
time rm -rf /nfs/test/dir.1000 > ls.txt
kernel | 36 | 36NORC | 38 | 38RC | 38NB
--------+----------+----------+----------+----------+----------
real | 0m0.283s | 0m0.277s | 0m0.296s | 0m0.291s | 0m0.283s
user | 0m0.003s | 0m0.010s | 0m0.007s | 0m0.010s | 0m0.003s
sys | 0m0.120s | 0m0.097s | 0m0.107s | 0m0.087s | 0m0.090s
access | 83 | 82 | 87 | 85 | 80
getattr | 1 | 1 | 1 | 1 | 1
lookup | 1002 | 1002 | 1002 | 1002 | 1002
remove | 1001 | 1001 | 1001 | 1001 | 1001
statfs | 1 | 1 | 1 | 1 | 1
readdir | 13 | 13 | 20 | 20 | 20
10,000 Files
============
time ls -f --color=none /nfs/test/dir.10000 > ls.txt
kernel | 36 | 36NORC | 38 | 38RC | 38NB
--------+----------+----------+----------+----------+----------
real | 0m0.232s | 0m0.318s | 0m0.160s | 0m0.148s | 0m0.155s
user | 0m0.007s | 0m0.000s | 0m0.003s | 0m0.003s | 0m0.003s
sys | 0m0.013s | 0m0.027s | 0m0.067s | 0m0.087s | 0m0.080s
access | 3 | 3 | 3 | 3 | 3
getattr | 1 | 1 | 1 | 1 | 1
lookup | 2 | 2 | 2 | 2 | 2
readdir | 139 | 139 | 197 | 197 | 197
time ls -lU --color=none /nfs/test/dir.10000 > ls.txt
kernel | 36 | 36NORC | 38 | 38RC | 38NB
--------+----------+----------+----------+----------+----------
real | 0m2.059s | 0m1.848s | 0m1.513s | 0m1.463s | 0m1.359s
user | 0m0.040s | 0m0.060s | 0m0.047s | 0m0.070s | 0m0.067s
sys | 0m0.657s | 0m0.823s | 0m0.550s | 0m0.723s | 0m0.583s
access | 3 | 3 | 3 | 3 | 3
getattr | 1 | 1 | 1 | 1 | 1
lookup | 10002 | 10002 | 10002 | 10002 | 10002
readdir | 139 | 139 | 197 | 197 | 197
time ls -U --color=none /nfs/test/dir.10000 > ls.txt
kernel | 36 | 36NORC | 38 | 38RC | 38NB
--------+----------+----------+----------+----------+----------
real | 0m0.298s | 0m0.119s | 0m0.116s | 0m0.145s | 0m0.154s
user | 0m0.007s | 0m0.000s | 0m0.007s | 0m0.003s | 0m0.003s
sys | 0m0.017s | 0m0.053s | 0m0.013s | 0m0.110s | 0m0.117s
access | 3 | 3 | 3 | 3 | 3
getattr | 1 | 1 | 1 | 1 | 1
lookup | 2 | 2 | 2 | 2 | 2
readdir | 139 | 139 | 197 | 197 | 197
time rm -rf /nfs/test/dir.10000 > ls.txt
kernel | 36 | 36NORC | 38 | 38RC | 38NB
--------+----------+----------+----------+----------+----------
real | 0m2.721s | 0m2.701s | 0m2.680s | 0m2.755s | 0m2.744s
user | 0m0.017s | 0m0.033s | 0m0.017s | 0m0.033s | 0m0.027s
sys | 0m0.833s | 0m0.837s | 0m0.843s | 0m0.850s | 0m0.927s
access | 800 | 794 | 781 | 800 | 793
getattr | 1 | 1 | 1 | 1 | 1
lookup | 10002 | 10002 | 10002 | 10002 | 10002
remove | 10001 | 10001 | 10001 | 10001 | 10001
statfs | 1 | 1 | 1 | 1 | 1
readdir | 139 | 139 | 197 | 197 | 197
100,000 Files
=============
time ls -f --color=none /nfs/test/dir.100000 > ls.txt
kernel | 36 | 36NORC | 38 | 38RC | 38NB
--------+-----------+-----------+-----------+-----------+----------
real | 0m2.923s | 0m3.339s | 0m1.085s | 0m1.040s | 0m1.497s
user | 0m0.047s | 0m0.030s | 0m0.043s | 0m0.037s | 0m0.030s
sys | 0m0.230s | 0m0.263s | 0m0.217s | 0m0.263s | 0m0.227s
access | 3 | 3 | 3 | 3 | 3
getattr | 1 | 1 | 1 | 1 | 1
lookup | 2 | 2 | 2 | 2 | 2
readdir | 1389 | 1389 | 1961 | 1961 | 1961
time ls -lU --color=none /nfs/test/dir.100000 > ls.txt
kernel | 36 | 36NORC | 38 | 38RC | 38NB
--------+-----------+-----------+-----------+-----------+----------
real | 0m16.173s | 0m19.797s | 0m14.398s | 0m13.470s | 0m13.518s
user | 0m00.523s | 0m00.760s | 0m00.510s | 0m00.560s | 0m00.550s
sys | 0m06.670s | 0m08.053s | 0m05.923s | 0m05.413s | 0m05.340s
access | 3 | 3 | 3 | 3 | 3
getattr | 1 | 1 | 1 | 1 | 1
lookup | 100002 | 100002 | 100002 | 100002 | 100002
readdir | 1389 | 1389 | 1961 | 1961 | 1961
time ls -U --color=none /nfs/test/dir.100000 > ls.txt
kernel | 36 | 36NORC | 38 | 38RC | 38NB
--------+-----------+-----------+-----------+-----------+----------
real | 0m3.585s | 0m1.313s | 0m0.738s | 0m1.256s | 0m0.806s
user | 0m0.033s | 0m0.037s | 0m0.030s | 0m0.037s | 0m0.033s
sys | 0m0.240s | 0m0.313s | 0m0.200s | 0m0.290s | 0m0.263s
access | 3 | 3 | 3 | 3 | 3
getattr | 1 | 1 | 1 | 1 | 1
lookup | 2 | 2 | 2 | 2 | 2
readdir | 1389 | 1389 | 1961 | 1961 | 1961
time rm -rf /nfs/test/dir.100000 > ls.txt
kernel | 36 | 36NORC | 38 | 38RC | 38NB
--------+-----------+-----------+-----------+-----------+----------
real | 0m29.988s | 0m30.379s | 0m29.828s | 0m29.804s | 0m30.188s
user | 0m00.227s | 0m00.233s | 0m00.173s | 0m00.243s | 0m00.177s
sys | 0m08.249s | 0m08.113s | 0m08.499s | 0m09.019s | 0m08.649s
access | 7833 | 7794 | 7903 | 7945 | 7968
getattr | 1 | 1 | 1 | 1 | 1
lookup | 100002 | 100002 | 100002 | 100002 | 100002
remove | 100001 | 100001 | 100001 | 100001 | 100001
statfs | 2 | 2 | 2 | 2 | 2
readdir | 1389 | 1389 | 1961 | 1961 | 1961
1,000,000 Files
===============
time ls -f --color=none /nfs/test/dir.1000000 > ls.txt
kernel | 36 | 36NORC | 38 | 38RC | 38NB
--------+------------+------------+------------+------------+-----------
real | 1m13.126s | 1m44.799s | | | 0m17.438s
user | 0m00.413s | 0m00.323s | | | 0m00.013s
sys | 0m13.022s | 0m13.666s | Looping | Looping | 0m00.067s
access | 3 | 3 | readdir | readdir | 3
getattr | 2 | 3 | bug | bug | 1
lookup | 2 | 2 | | | 2
readdir | 13889 | 13889 | | | 646
Readdir loop
detected
time ls -lU --color=none /nfs/test/dir.1000000 > ls.txt
kernel | 36 | 36NORC | 38 | 38RC | 38NB
--------+------------+------------+------------+------------+-----------
real | 4m53.270s | 3m28.650s | 0m29.409s | | 0m4.531s
user | 0m06.476s | 0m06.246s | 0m03.166s | | 0m0.167s
sys | 1m16.152s | 1m20.161s | 0m18.369s | ls: memory | 0m1.850s
access | 18 | 12 | 3 | exhausted | 3
getattr | 1 | 2 | 4 | | 1
lookup | 1000002 | 1000002 | 23946 | | 32946
readdir | 13889 | 13889 | 6600 | | 646
Out of memory Readdir loop
detected
time ls -U --color=none /nfs/test/dir.1000000 > ls.txt
kernel | 36 | 36NORC | 38 | 38RC | 38NB
--------+------------+------------+------------+------------+-----------
real | 2m27.713s | 0m19.563s | | | 0m0.433s
user | 0m00.290s | 0m00.333s | | | 0m0.017s
sys | 0m13.192s | 0m13.859s | Looping | Looping | 0m0.163s
access | 3 | 3 | readdir | readdir | 3
getattr | 3 | 1 | bug | bug | 1
lookup | 2 | 2 | | | 2
readdir | 13889 | 13889 | | | 646
Readdir loop
detected
time rm -rf /nfs/test/dir.1000000 > ls.txt
kernel | 36 | 36NORC | 38 | 38RC | 38NB
--------+------------+------------+------------+------------+-----------
real | 35m48.426s | 34m05.507s | 0m17.782s | 0m11.633s | 1m0.290s
user | 00m05.040s | 00m03.333s | 0m00.973s | 0m01.110s | 0m0.057s
sys | 04m18.433s | 03m55.751s | 0m03.906s | 0m02.696s | 0m3.053s
access | 112164 | 107082 | 3 | 3 | 2638
getattr | 3 | 2 | 1 | 1 | 1
lookup | 1000004 | 1000004 | 2 | 2 | 32946
remove | 1000001 | 1000001 | 0 | 0 | 32945
statfs | 2 | 2 | 0 | 0 | 2
readdir | 13889 | 13889 | 1084 | 1556 | 646
Out of memory Out of memory Readdir loop
detected