Lionel Cons
2013-04-15 01:07:41 UTC
Based on the recent discussion about using mmap() for reading the
results of command substitutions I did some testing and found that on
Solaris (Solaris 11 and a 64bit build) ksh93 still behaves not
optimal. The primary problem I see is that MANY mmap() calls with a
very small map size (524288 bytes) are executed instead of either
mapping the input file in one large chunk or at least uses a chunk
size large enough that the system can use largepages (2M for x86,
4M/32M/256M for SPARC64) if possible. Using a chunk size of 524288
bytes is a joke.
Is there a specific reason why the the code in sfrd.c only maps such
small chunks (I'd expect that a 64bit process could easily map 16GB
each time) from a file or is this a bug?
Here's a truss log which shows the problem of using many mmap() calls
with a very small mal chunk size instead of just using a single mmap()
call to map the whole file:
cons at gog.dev.cern.ch$ seq 10000000 >tmpfile
cons at gog.dev.cern.ch$ ls -l tmpfile
-rw-r--r-- 1 cons cons 78888897 Apr 15 02:56 tmpfile
cons at gog.dev.cern.ch$ truss ./arch/sol11.i386-64/bin/ksh -c
'x=$(/bin/cat xxx) ; true' 2>&1 | egrep 'mmap\(0x00.+, MAP_PRIVATE,'
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3, 0) =
0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3, 524288)
= 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
1048576) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
1572864) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
2097152) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
2621440) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
3145728) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
3670016) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
4194304) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
4718592) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
5242880) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
5767168) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
6291456) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
6815744) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
7340032) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
7864320) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
8388608) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
8912896) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
9437184) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
9961472) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
10485760) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
11010048) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
11534336) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
12058624) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
12582912) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
13107200) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
13631488) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
14155776) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
14680064) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
15204352) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
15728640) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
16252928) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
16777216) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
17301504) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
17825792) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
18350080) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
18874368) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
19398656) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
19922944) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
20447232) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
20971520) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
21495808) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
22020096) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
22544384) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
23068672) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
23592960) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
24117248) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
24641536) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
25165824) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
25690112) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
26214400) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
26738688) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
27262976) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
27787264) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
28311552) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
28835840) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
29360128) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
29884416) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
30408704) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
30932992) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
31457280) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
31981568) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
32505856) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
33030144) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
33554432) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
34078720) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
34603008) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
35127296) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
35651584) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
36175872) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
36700160) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
37224448) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
37748736) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
38273024) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
38797312) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
39321600) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
39845888) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
40370176) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
40894464) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
41418752) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
41943040) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
42467328) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
42991616) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
43515904) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
44040192) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
44564480) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
45088768) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
45613056) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
46137344) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
46661632) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
47185920) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
47710208) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
48234496) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
48758784) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
49283072) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
49807360) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
50331648) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
50855936) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
51380224) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
51904512) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
52428800) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
52953088) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
53477376) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
54001664) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
54525952) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
55050240) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
55574528) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
56098816) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
56623104) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
57147392) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
57671680) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
58195968) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
58720256) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
59244544) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
59768832) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
60293120) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
60817408) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
61341696) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
61865984) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
62390272) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
62914560) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
63438848) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
63963136) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
64487424) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
65011712) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
65536000) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
66060288) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
66584576) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
67108864) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
67633152) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
68157440) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
68681728) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
69206016) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
69730304) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
70254592) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
70778880) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
71303168) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
71827456) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
72351744) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
72876032) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
73400320) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
73924608) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
74448896) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
74973184) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
75497472) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
76021760) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
76546048) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
77070336) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
77594624) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
78118912) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 245697, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
78643200) = 0xFFFFFD7FFE4E3000
Lionel
results of command substitutions I did some testing and found that on
Solaris (Solaris 11 and a 64bit build) ksh93 still behaves not
optimal. The primary problem I see is that MANY mmap() calls with a
very small map size (524288 bytes) are executed instead of either
mapping the input file in one large chunk or at least uses a chunk
size large enough that the system can use largepages (2M for x86,
4M/32M/256M for SPARC64) if possible. Using a chunk size of 524288
bytes is a joke.
Is there a specific reason why the the code in sfrd.c only maps such
small chunks (I'd expect that a 64bit process could easily map 16GB
each time) from a file or is this a bug?
Here's a truss log which shows the problem of using many mmap() calls
with a very small mal chunk size instead of just using a single mmap()
call to map the whole file:
cons at gog.dev.cern.ch$ seq 10000000 >tmpfile
cons at gog.dev.cern.ch$ ls -l tmpfile
-rw-r--r-- 1 cons cons 78888897 Apr 15 02:56 tmpfile
cons at gog.dev.cern.ch$ truss ./arch/sol11.i386-64/bin/ksh -c
'x=$(/bin/cat xxx) ; true' 2>&1 | egrep 'mmap\(0x00.+, MAP_PRIVATE,'
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3, 0) =
0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3, 524288)
= 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
1048576) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
1572864) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
2097152) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
2621440) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
3145728) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
3670016) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
4194304) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
4718592) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
5242880) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
5767168) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
6291456) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
6815744) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
7340032) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
7864320) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
8388608) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
8912896) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
9437184) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
9961472) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
10485760) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
11010048) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
11534336) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
12058624) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
12582912) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
13107200) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
13631488) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
14155776) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
14680064) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
15204352) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
15728640) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
16252928) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
16777216) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
17301504) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
17825792) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
18350080) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
18874368) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
19398656) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
19922944) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
20447232) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
20971520) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
21495808) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
22020096) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
22544384) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
23068672) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
23592960) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
24117248) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
24641536) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
25165824) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
25690112) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
26214400) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
26738688) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
27262976) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
27787264) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
28311552) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
28835840) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
29360128) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
29884416) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
30408704) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
30932992) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
31457280) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
31981568) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
32505856) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
33030144) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
33554432) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
34078720) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
34603008) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
35127296) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
35651584) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
36175872) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
36700160) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
37224448) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
37748736) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
38273024) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
38797312) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
39321600) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
39845888) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
40370176) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
40894464) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
41418752) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
41943040) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
42467328) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
42991616) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
43515904) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
44040192) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
44564480) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
45088768) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
45613056) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
46137344) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
46661632) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
47185920) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
47710208) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
48234496) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
48758784) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
49283072) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
49807360) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
50331648) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
50855936) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
51380224) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
51904512) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
52428800) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
52953088) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
53477376) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
54001664) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
54525952) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
55050240) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
55574528) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
56098816) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
56623104) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
57147392) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
57671680) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
58195968) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
58720256) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
59244544) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
59768832) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
60293120) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
60817408) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
61341696) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
61865984) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
62390272) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
62914560) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
63438848) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
63963136) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
64487424) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
65011712) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
65536000) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
66060288) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
66584576) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
67108864) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
67633152) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
68157440) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
68681728) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
69206016) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
69730304) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
70254592) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
70778880) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
71303168) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
71827456) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
72351744) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
72876032) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
73400320) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
73924608) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
74448896) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
74973184) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
75497472) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
76021760) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
76546048) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
77070336) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
77594624) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
78118912) = 0xFFFFFD7FFE49F000
mmap(0x00000000, 245697, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3,
78643200) = 0xFFFFFD7FFE4E3000
Lionel