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

Reply via email to