Functionality wise, rounding in mapfile is not supposed to increase the size of the segment. It introduces an address space hole from the end of the segment to the roundup address. That is the reason why the text segment is still being mapped with 8K pages (with the mapfile trick), and there is no change in ITLB misses.

I just filed the bug number 6392464. Due to the bug, the binary sees an extra 4M size in this particular case, and also, a separate non-required 4M page is being created (which was not supposed to be created - .interp section offset is 4M).

Dev


David McDaniel wrote:
A binary is less 4M and demonstrates high ITLB miss rates. I decide to 
experiment with making it larger to address the issue.
  The first approach was to assemble the following .s file and link it into the 
target binaries:
.section ".text"
.align 4096*1024
.skip  8
This resulted in an enlarged binary which does get mapped on 4M boundary and which results in ~50% reduction in ITLB_miss rates as reported by cputrack. Thinking this business of linking in bogus .o files to be pretty ugly, I tried to use a mapfile as follows to perhaps more effectively and simply achieve the same result:

text = A0x400000;
text = R0x400000;

  This also results in an enlarged binary but does *not* result in a reduction 
in ITLB_miss rates. Upon further investigation, it appears that the mapfile 
option does not behave as expected:

# dump -h a.out
a.out: **** SECTION HEADER TABLE ****
[No]    Type    Flags   Addr         Offset       Size          Name
        Link    Info    Adralgn      Entsize
[1] 1 2 0x800000 0x400000 0x11 .interp 0 0 0x400000 0 [2] 5 2 0x800014 0x400014 0x42ec .hash 3 0 0x4 0x4 [3] 11 2 0x804300 0x404300 0x85c0 .dynsym 4 1 0x4 0x10 [4] 3 34 0x80c8c0 0x40c8c0 0x14ec0 .dynstr 0 0 0x1 0 [5] 1879048190 2 0x821780 0x421780 0x50 .SUNW_version 4 2 0x4 0 [6] 4 66 0x8217d0 0x4217d0 0xc .rela.data 3 17 0x4 0xc [7] 4 66 0x8217dc 0x4217dc 0x1e0 .rela.bss 3 19 0x4 0xc [8] 4 66 0x8219bc 0x4219bc 0xed0 .rela.plt 3 15 0x4 0xc [9] 1 6 0x822890 0x422890 0x313488 .text 0 0 0x8 0 [10] 1 6 0xb35d18 0x735d18 0x10 .init 0 0 0x4 0 [11] 1 6 0xb35d28 0x735d28 0xc .fini 0 0 0x4 0
... and so forth.

   Despite the mapfile directive, the text section is not aligned and not 
rounded up. The .interp section however *does* appear to have been rounded up. 
I'm inclined to think the problem is simply that I dont know what the heck I'm 
doing.  Any ideas?
This message posted from opensolaris.org
_______________________________________________
perf-discuss mailing list
perf-discuss@opensolaris.org

_______________________________________________
perf-discuss mailing list
perf-discuss@opensolaris.org

Reply via email to