1AUTOHBW(7) AUTOHBW AUTOHBW(7)
2
3
4
6 libautohbw.so - An interposer library for redirecting heap allocations
7
9 LD_PRELOAD=libautohbw.so command {arguments ...}
10
12 AutoHBW library (libautohbw.so) is an interposer library for redirect‐
13 ing heap allocations (malloc, calloc, realloc, valloc, posix_memalign,
14 memlign) to high-bandwidth (HBW) memory. Consequently, AutoHBW library
15 can be used to automatically allocate high-bandwidth memory without any
16 modification to source code of an application.
17
18 For instance, the following command-line runs existing binary /bin/ls
19 with AutoHBW library, automatically redirecting heap allocations
20 (larger than a given threshold) to high-bandwidth memory.
21
22 LD_PRELOAD=libautohbw.so /bin/ls
23
24
26 The behavior of AutoHBW library is controlled by the following environ‐
27 ment variables.
28
29
30 AUTO_HBW_SIZE=x:[y]
31 Indicates that any allocation larger than x and smaller than y should
32 be allocated in HBW memory. x and y can be followed by a K, M, or G to
33 indicate the size in Kilo/Memga/Giga bytes (e.g., 4K, 3M, 2G).
34
35 Examples:
36
37 AUTO_HBW_SIZE=4K
38 # allocations larger than 4K allocated in HBW
39
40 AUTO_HBW_SIZE=1M:5M
41 # allocations between 1M and 5M allocated in HBW
42
43
44 AUTO_HBW_LOG=level
45 Sets the value of logging (printing) level. If level is:
46
47 -1 no messages are printed
48
49 0 no allocations messages are printed but INFO messages are
50 printed
51
52 1 a log message is printed for each allocation (Default)
53
54 2 a log message is printed for each allocation with a backtrace.
55 Redirect this output and use autohbw_get_src_lines.pl to find
56 source lines for each allocation. Your application must be com‐
57 piled with -g to see source lines.
58
59 Notes:
60
61 1. Logging adds extra overhead. Therefore, for performance crit‐
62 ical runs, logging level should be 0
63
64 2. The amount of free memory printed with log messages is only
65 approximate -- e.g. pages that are not touched yet are excluded
66
67 Examples:
68
69 AUTO_HBW_LOG=1
70
71
72 AUTO_HBW_MEM_TYPE=memory_type
73 Sets the type of memory type that should be automatically allocated. By
74 default, this type is MEMKIND_HBW_PREFERRED, if MCDRAM is found in your
75 system; otherwise, the default is MEMKIND_DEFAULT. The names of memory
76 types are defined in memkind(3) man page. memory_type has to be one of
77 MEMKIND_DEFAULT, MEMKIND_HUGETLB, MEMKIND_INTERLEAVE, MEMKIND_HBW,
78 MEMKIND_HBW_PREFERRED, MEMKIND_HBW_HUGETLB, MEMKIND_HBW_PRE‐
79 FERRED_HUGETLB, MEMKIND_HBW_GBTLB (DEPRECATED), MEMKIND_HBW_PRE‐
80 FERRED_GBTLB (DEPRECATED), MEMKIND_GBTLB (DEPRECATED),
81 MEMKIND_HBW_INTERLEAVE
82
83 If you are requesting any huge TLB pages, please make sure that the
84 requested type is currently enabled in your OS.
85
86 Examples:
87
88 AUTO_HBW_MEM_TYPE=MEMKIND_HBW_PREFERRED
89 # (default, if MCDRAM present)
90
91 AUTO_HBW_MEM_TYPE=MEMKIND_DEFAULT
92 # (default, if MCDRAM absent)
93
94 AUTO_HBW_MEM_TYPE=MEMKIND_HBW_HUGETLB
95
96 AUTO_HBW_MEM_TYPE=MEMKIND_HUGETLB
97
98
99 AUTO_HBW_DEBUG=0|1|2
100 Set the debug message printing level. Default is 0. This is mainly for
101 development.
102
103
105 It is possible to temporarily disable/enable automatic HBW allocations
106 by calling disableAutoHBW() and enableAutoHBW() in source code. To call
107 these routines, please include autohbw_api.h header file and link with
108 -lautohbw.
109
110
111 If high-bandwidth memory is not physically present in your system, the
112 environment variable MEMKIND_HBW_NODES must be set to indicate the
113 high-bandwidth node as indicated in memkind(3).
114
115
116
118 The following will run /bin/ls with AutoHBW library. Make sure that
119 paths to both libautohbw.so and libmemkind.so are included in
120 LD_LIBRARY_PATH.
121
122 LD_PRELOAD=libautohbw.so /bin/ls -l
123
124 To run with MPI, a shell script must be created, with the correct
125 LD_PRELOAD command for each rank. For example, if we put
126 LD_PRELOAD=libautohbw.so /bin/ls in a shell script named auto‐
127 hbw_test.sh, it can be executed with 2 MPI ranks as:
128
129 mpirun -n 2 ./autohbw_test.sh
130
131
133 Copyright (C) 2014, 2015, 2016 Intel Corporation. All rights reserved.
134
135
137 memkind(3) malloc(3), numactl(8),
138
139
140
141
142
143
144
145
146
147
148Intel Corporation 2016-07-28 AUTOHBW(7)