Ok, here are the first set of results. I am going to rerun the entire
suite of tests again with the machines limited to 128M of ram to see
what happens then.
BTW, these are really nice machines! I highly recommend DELL2550's.
The results w/ 512M are basically that it doesn't matter what we do
with the namei cache. vmiodirenable is the only thing that really makes
a difference. I expect we will see more differentiation in the 128M
tests.
-Matt
WIDE TERMINAL WINDOW REQUIRED!
---------------------------------------------------------------------------------------------------
TEST SUITE 1 (512M ram)
buildworld of -stable. DELL2550 (Duel PIII-1.2GHz / 512M ram / SCSI)
23 September 2001 SMP kernel, softupdates-enabled, dirpref'd local
/usr/src (no nfs),
make -j 12 buildworld UFS_DIRHASH. 2 identical machines tested in parallel
(test1, test2)
/usr/bin/time -l timings note: atime updates left enabled in all tests
REUSE LEAF DIR VNODES: directory vnodes with no subdirectories in the namei cache can
be reused
REUSE ALL DIR VNODES: directory vnodes can be reused (namei cache ignored)
DO NOT REUSE DIR...: (Poul's original 1995 algo) directory vnode can only be reused
if no subdirectories or files in the
namei cache
VMIODIRENABLE ENABLED [------------ A ------------] [------------ B ------------]
[------------ C ------------]
[BEST CASE ] [BEST CASE ]
[BEST CASE ]
machine test1 test2 test1 test2 test1 test2 test1 test2
test1 test2 test1 test2
pass (2) R 1 1 2 2 R 1 1 2 2 R
1 1 2 2
vfs.vmiodirenable E 1 1 1 1 E 1 1 1 1 E
1 1 1 1
vfs.nameileafonly B 1 1 1 1 B 0 0 0 0 B
-1 -1 -1 -1
O O O
O REUSE LEAF DIR VNODES O REUSE ALL DIR VNODES O
DO NOT REUSE DIR VNODES W/ACTIVE NAMEI
T T T
25:46 25:44 25:19 25:05 25:49 25:40 25:14 25:04
25:46 25:42 25:07 25:14
real 1546 1544 1519 1505 1549 1540 1514 1504
1546 1542 1507 1514
user 1361 1352 1359 1356 1362 1354 1361 1354
1361 1352 1358 1355
sys 636 637 645 640 632 633 642 641
636 637 642 640
max resident 16292 16276 16268 16288 16284 16288 16280 16280
16288 16288 16284 16288
avg shared mem 1026 1025 1025 1025 1027 1028 1025 1023
1025 1026 1026 1025
avg unshared data 1018 1009 1014 1007 1007 1010 1007 1008
1010 1018 1006 1002
avg unshared stack 129 129 129 129 129 129 129 128
129 129 129 129
page reclaims 11.15M 11.15M 11.16M 11.15M 11.15M 11.16M 11.15M 11.16M
11.15M 11.15M 11.15M 11.15M
page faults 1812 1800 1316 1348 1797 1798 1320 1273
1795 1797 1307 1321
swaps 0 0 0 0 0 0 0 0
0 0 0 0
block input ops 26542 26535 9272 9233 26555 26577 9258 8720
26470 26552 8905 9237
block output ops 5400 5217 5248 5266 5450 5109 5328 5389
5332 5371 5300 5341
messages sent 34582 34572 33533 33538 34579 34538 33539 33510
34610 34587 33525 33543
messages received 34582 34578 33533 33539 34580 34540 33546 33524
34610 34589 33525 33543
signals received 8 8 8 8 8 8 8 8
8 8 8 8
voluntary ctx sw 594390 595868 575038 574626 594677 594028 571265 572912
593500 593548 571394 573575
invol. ctx switch 380583 381897 378850 376941 380393 381540 374408 376260
380385 379585 375318 374844
desiredvnodes 36157 36157 36157 36157 36157 36157 36157 36157
36157 36157 36157 36157
maxvnodes (sysstat)(1) 37099 37064 37122 37208 37180 36928 37193 37314
37175 37152 37152 37152
VMIODIRENABLE DISABLED [------------ D ------------] [------------ E ------------]
[BEST CASE ] [BEST CASE ]
machine test1 test2 test1 test2 test1 test2 test1 test2
pass (2) R 1 1 2 2 R 1 1 2 2
vfs.vmiodirenable E 0 0 0 0 E 0 0 0 0
vfs.nameileafonly B 1 1 1 1 B <=0 <=0 <=0 <=0
O O
O REUSE LEAF DIR VNODES O DO NOT REUSE DIR VNODES
W/ACTIVE NAMEI
T T
26:19 26:03 25:50 25:37 26:16 26:10 25:46 25:43
real 1579 1563 1550 1537 1576 1570 1546 1543
user 1361 1356 1360 1355 1359 1349 1361 1354
sys 634 632 640 637 636 639 641 641
max resident 16264 16276 16276 16280 16292 16280 16284 16283
avg shared mem 1026 1025 1026 1025 1027 1025 1025 1026
avg unshared data 1012 1005 1010 1009 1009 1007 1010 1010
avg unshared stack 129 129 129 129 129 129 129 129
page reclaims 11.15M 11.15M 11.15M 11.15M 11.15M 11.15M 11.15M 11.15M
page faults 1716 1720 1272 1263 1717 1758 1264 1244
swaps 0 0 0 0 0 0 0 0
block input ops 33716 33749 18888 18930 33788 33849 18760 18794
block output ops 5283 5304 5305 5365 5525 5411 5423 5465
messages sent 34759 34732 33659 33650 34710 34707 33645 33686
messages received 34760 34738 33660 33651 34711 34707 33649 33693
signals received 8 8 8 8 8 8 8 8
voluntary ctx sw 604747 602379 586746 584227 603949 603830 584766 585322
invol. ctx switch 384576 383500 381032 379730 383183 383798 379336 380705
desiredvnodes 36157 36157 36157 36157 36157 36157 36157 36157
maxvnodes (sysstat)(1) 37096 37062 37488 37231 37107 37228 37107 37228
note(1): there aren't enough discrete directories in /usr/src and /usr/obj to
make a difference in the maxvnode numbers no matter what algorithm
is chosen when vmiodirenable is turned on. /usr/src has 6607 directories
and 62635 files. Running the entire suite of tests again with the
machine artificially reduced to 128M of memory should yield more
interesting results.
note(2): PASS 1 vs PASS 2. A second buildworld pass is taken after the first
completes. Considering the amount of ram in the machines the second
pass is expected to perform much better due to prior caching of data.
TESTS 1A, 1B, 1C: All results are within a standard-deviation of each
other. With vmiodirenabled turned on, it does not appear to matter
what type of namecache restriction(s) we place on directory vnode
reuse. The existance of direcory pages in the VM Page cache appear
to override all other considerations (at least on these boxes, with
512M of physical ram). Again, running the entire suite of tests again
with the machines artifically reduced to 128M of memory should yield
more interesting results.
TESTS 1D, 1E: These tests were run with vmiodirenable turned off. This
has the effect of reducing (by two orderes of magnitude) the amount
of memory available to cache directories. Therefore the namei cache
tests in the vnode reuse code become much more important. Turning
off vmiodirenable resulted in around 40 second longer buildworlds
even in the best case. Again, these numbers should alter more
drastically in SUITE 2 when we test with less physical memory.
-Matt
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message