1 .. SPDX-License-Identifier: (GPL-2.0-only OR B << 2 << 3 ================ 1 ================ 4 bpftool-prog 2 bpftool-prog 5 ================ 3 ================ 6 ---------------------------------------------- 4 ------------------------------------------------------------------------------- 7 tool for inspection and simple manipulation of 5 tool for inspection and simple manipulation of eBPF progs 8 ---------------------------------------------- 6 ------------------------------------------------------------------------------- 9 7 10 :Manual section: 8 8 :Manual section: 8 11 9 12 .. include:: substitutions.rst << 13 << 14 SYNOPSIS 10 SYNOPSIS 15 ======== 11 ======== 16 12 17 **bpftool** [*OPTIONS*] **prog** *COMMAND* !! 13 **bpftool** [*OPTIONS*] **prog** *COMMAND* 18 14 19 *OPTIONS* := { |COMMON_OPTIONS| | !! 15 *OPTIONS* := { { **-j** | **--json** } [{ **-p** | **--pretty** }] | { **-f** | **--bpffs** } } 20 { **-f** | **--bpffs** } | { **-m** | **--mapc !! 16 21 { **-L** | **--use-loader** } } !! 17 *COMMANDS* := 22 !! 18 { **show** | **list** | **dump xlated** | **dump jited** | **pin** | **load** 23 *COMMANDS* := !! 19 | **loadall** | **help** } 24 { **show** | **list** | **dump xlated** | **du << 25 **loadall** | **help** } << 26 20 27 PROG COMMANDS 21 PROG COMMANDS 28 ============= 22 ============= 29 23 30 | **bpftool** **prog** { **show** | **list** } !! 24 | **bpftool** **prog { show | list }** [*PROG*] 31 | **bpftool** **prog dump xlated** *PROG* [{ * !! 25 | **bpftool** **prog dump xlated** *PROG* [{**file** *FILE* | **opcodes** | **visual** | **linum**}] 32 | **bpftool** **prog dump jited** *PROG* [{ * !! 26 | **bpftool** **prog dump jited** *PROG* [{**file** *FILE* | **opcodes** | **linum**}] 33 | **bpftool** **prog pin** *PROG* *FILE* !! 27 | **bpftool** **prog pin** *PROG* *FILE* 34 | **bpftool** **prog** { **load** | **loadall* !! 28 | **bpftool** **prog { load | loadall }** *OBJ* *PATH* [**type** *TYPE*] [**map** {**idx** *IDX* | **name** *NAME*} *MAP*] [**dev** *NAME*] [**pinmaps** *MAP_DIR*] 35 | **bpftool** **prog attach** *PROG* *ATTACH_T !! 29 | **bpftool** **prog attach** *PROG* *ATTACH_TYPE* [*MAP*] 36 | **bpftool** **prog detach** *PROG* *ATTACH_T !! 30 | **bpftool** **prog detach** *PROG* *ATTACH_TYPE* [*MAP*] 37 | **bpftool** **prog tracelog** !! 31 | **bpftool** **prog tracelog** 38 | **bpftool** **prog run** *PROG* **data_in** !! 32 | **bpftool** **prog run** *PROG* **data_in** *FILE* [**data_out** *FILE* [**data_size_out** *L*]] [**ctx_in** *FILE* [**ctx_out** *FILE* [**ctx_size_out** *M*]]] [**repeat** *N*] 39 | **bpftool** **prog profile** *PROG* [**durat !! 33 | **bpftool** **prog help** 40 | **bpftool** **prog help** << 41 | 34 | 42 | *MAP* := { **id** *MAP_ID* | **pinned** *FIL !! 35 | *MAP* := { **id** *MAP_ID* | **pinned** *FILE* } 43 | *PROG* := { **id** *PROG_ID* | **pinned** *F !! 36 | *PROG* := { **id** *PROG_ID* | **pinned** *FILE* | **tag** *PROG_TAG* } 44 | *TYPE* := { !! 37 | *TYPE* := { 45 | **socket** | **kprobe** | **kretprobe** !! 38 | **socket** | **kprobe** | **kretprobe** | **classifier** | **action** | 46 | **tracepoint** | **raw_tracepoint** | ** !! 39 | **tracepoint** | **raw_tracepoint** | **xdp** | **perf_event** | **cgroup/skb** | 47 | **cgroup/sock** | **cgroup/dev** | **lwt !! 40 | **cgroup/sock** | **cgroup/dev** | **lwt_in** | **lwt_out** | **lwt_xmit** | 48 | **lwt_seg6local** | **sockops** | **sk_s !! 41 | **lwt_seg6local** | **sockops** | **sk_skb** | **sk_msg** | **lirc_mode2** | 49 | **cgroup/bind4** | **cgroup/bind6** | ** !! 42 | **cgroup/bind4** | **cgroup/bind6** | **cgroup/post_bind4** | **cgroup/post_bind6** | 50 | **cgroup/connect4** | **cgroup/connect6* !! 43 | **cgroup/connect4** | **cgroup/connect6** | **cgroup/sendmsg4** | **cgroup/sendmsg6** | 51 | **cgroup/getpeername4** | **cgroup/getpe !! 44 | **cgroup/recvmsg4** | **cgroup/recvmsg6** | **cgroup/sysctl** | 52 | **cgroup/getsockname4** | **cgroup/getso !! 45 | **cgroup/getsockopt** | **cgroup/setsockopt** 53 | **cgroup/sendmsg4** | **cgroup/sendmsg6* !! 46 | } 54 | **cgroup/recvmsg4** | **cgroup/recvmsg6* !! 47 | *ATTACH_TYPE* := { 55 | **cgroup/getsockopt** | **cgroup/setsock !! 48 | **msg_verdict** | **stream_verdict** | **stream_parser** | **flow_dissector** 56 | **struct_ops** | **fentry** | **fexit** !! 49 | } 57 | } << 58 | *ATTACH_TYPE* := { << 59 | **sk_msg_verdict** | **sk_skb_verdict** << 60 | **sk_skb_stream_parser** | **flow_dissec << 61 | } << 62 | *METRICs* := { << 63 | **cycles** | **instructions** | **l1d_lo << 64 | **itlb_misses** | **dtlb_misses** << 65 | } << 66 50 67 51 68 DESCRIPTION 52 DESCRIPTION 69 =========== 53 =========== 70 bpftool prog { show | list } [*PROG*] !! 54 **bpftool prog { show | list }** [*PROG*] 71 Show information about loaded programs. I !! 55 Show information about loaded programs. If *PROG* is 72 information only about given programs, oth !! 56 specified show information only about given program, otherwise 73 currently loaded on the system. In case of !! 57 list all programs currently loaded on the system. 74 match several programs which will all be s !! 58 75 !! 59 Output will start with program ID followed by program type and 76 Output will start with program ID followed !! 60 zero or more named attributes (depending on kernel version). 77 named attributes (depending on kernel vers !! 61 78 !! 62 Since Linux 5.1 the kernel can collect statistics on BPF 79 Since Linux 5.1 the kernel can collect sta !! 63 programs (such as the total time spent running the program, 80 the total time spent running the program, !! 64 and the number of times it was run). If available, bpftool 81 run). If available, bpftool shows such sta !! 65 shows such statistics. However, the kernel does not collect 82 not collect them by defaults, as it slight !! 66 them by defaults, as it slightly impacts performance on each 83 program run. Activation or deactivation of !! 67 program run. Activation or deactivation of the feature is 84 **kernel.bpf_stats_enabled** sysctl knob. !! 68 performed via the **kernel.bpf_stats_enabled** sysctl knob. 85 !! 69 86 Since Linux 5.8 bpftool is able to discove !! 70 **bpftool prog dump xlated** *PROG* [{ **file** *FILE* | **opcodes** | **visual** | **linum** }] 87 that hold open file descriptors (FDs) agai !! 71 Dump eBPF instructions of the program from the kernel. By 88 bpftool will automatically emit this infor !! 72 default, eBPF will be disassembled and printed to standard 89 !! 73 output in human-readable format. In this case, **opcodes** 90 bpftool prog dump xlated *PROG* [{ file *FILE* !! 74 controls if raw opcodes should be printed as well. 91 Dump eBPF instructions of the programs fro !! 75 92 will be disassembled and printed to standa !! 76 If **file** is specified, the binary image will instead be 93 format. In this case, **opcodes** controls !! 77 written to *FILE*. 94 as well. !! 78 95 !! 79 If **visual** is specified, control flow graph (CFG) will be 96 In case of **tag** or **name**, *PROG* may !! 80 built instead, and eBPF instructions will be presented with 97 will all be dumped. However, if **file** !! 81 CFG in DOT format, on standard output. 98 *PROG* must match a single program. !! 82 99 !! 83 If the prog has line_info available, the source line will 100 If **file** is specified, the binary image !! 84 be displayed by default. If **linum** is specified, 101 *FILE*. !! 85 the filename, line number and line column will also be 102 !! 86 displayed on top of the source line. 103 If **visual** is specified, control flow g !! 87 104 and eBPF instructions will be presented wi !! 88 **bpftool prog dump jited** *PROG* [{ **file** *FILE* | **opcodes** | **linum** }] 105 output. !! 89 Dump jited image (host machine code) of the program. 106 !! 90 If *FILE* is specified image will be written to a file, 107 If the programs have line_info available, !! 91 otherwise it will be disassembled and printed to stdout. 108 displayed. If **linum** is specified, the !! 92 109 column will also be displayed. !! 93 **opcodes** controls if raw opcodes will be printed. 110 !! 94 111 bpftool prog dump jited *PROG* [{ file *FILE* !! 95 If the prog has line_info available, the source line will 112 Dump jited image (host machine code) of th !! 96 be displayed by default. If **linum** is specified, 113 !! 97 the filename, line number and line column will also be 114 If *FILE* is specified image will be writt !! 98 displayed on top of the source line. 115 be disassembled and printed to stdout. *PR !! 99 116 when **file** is specified. !! 100 **bpftool prog pin** *PROG* *FILE* 117 !! 101 Pin program *PROG* as *FILE*. 118 **opcodes** controls if raw opcodes will b !! 102 119 !! 103 Note: *FILE* must be located in *bpffs* mount. It must not 120 If the prog has line_info available, the s !! 104 contain a dot character ('.'), which is reserved for future 121 **linum** is specified, the filename, line !! 105 extensions of *bpffs*. 122 be displayed. !! 106 123 !! 107 **bpftool prog { load | loadall }** *OBJ* *PATH* [**type** *TYPE*] [**map** {**idx** *IDX* | **name** *NAME*} *MAP*] [**dev** *NAME*] [**pinmaps** *MAP_DIR*] 124 bpftool prog pin *PROG* *FILE* !! 108 Load bpf program(s) from binary *OBJ* and pin as *PATH*. 125 Pin program *PROG* as *FILE*. !! 109 **bpftool prog load** pins only the first program from the 126 !! 110 *OBJ* as *PATH*. **bpftool prog loadall** pins all programs 127 Note: *FILE* must be located in *bpffs* mo !! 111 from the *OBJ* under *PATH* directory. 128 character ('.'), which is reserved for fut !! 112 **type** is optional, if not specified program type will be 129 !! 113 inferred from section names. 130 bpftool prog { load | loadall } *OBJ* *PATH* [ !! 114 By default bpftool will create new maps as declared in the ELF 131 Load bpf program(s) from binary *OBJ* and !! 115 object being loaded. **map** parameter allows for the reuse 132 load** pins only the first program from th !! 116 of existing maps. It can be specified multiple times, each 133 loadall** pins all programs from the *OBJ* !! 117 time for a different map. *IDX* refers to index of the map 134 is optional, if not specified program type !! 118 to be replaced in the ELF file counting from 0, while *NAME* 135 names. By default bpftool will create new !! 119 allows to replace a map by name. *MAP* specifies the map to 136 object being loaded. **map** parameter al !! 120 use, referring to it by **id** or through a **pinned** file. 137 maps. It can be specified multiple times, !! 121 If **dev** *NAME* is specified program will be loaded onto 138 *IDX* refers to index of the map to be rep !! 122 given networking device (offload). 139 from 0, while *NAME* allows to replace a m !! 123 Optional **pinmaps** argument can be provided to pin all 140 map to use, referring to it by **id** or t !! 124 maps under *MAP_DIR* directory. 141 **offload_dev** *NAME* is specified progra !! 125 142 networking device (offload). If **xdpmeta_ !! 126 Note: *PATH* must be located in *bpffs* mount. It must not 143 will become device-bound without offloadin !! 127 contain a dot character ('.'), which is reserved for future 144 metadata. Optional **pinmaps** argument ca !! 128 extensions of *bpffs*. 145 under *MAP_DIR* directory. !! 129 146 !! 130 **bpftool prog attach** *PROG* *ATTACH_TYPE* [*MAP*] 147 If **autoattach** is specified program wil !! 131 Attach bpf program *PROG* (with type specified by 148 case, only the link (representing the prog !! 132 *ATTACH_TYPE*). Most *ATTACH_TYPEs* require a *MAP* 149 pinned, not the program as such, so the pa !! 133 parameter, with the exception of *flow_dissector* which is 150 show -f**, only show in **bpftool link sho !! 134 attached to current networking name space. 151 when bpftool (libbpf) is able to infer all !! 135 152 object file, in particular, it's not suppo !! 136 **bpftool prog detach** *PROG* *ATTACH_TYPE* [*MAP*] 153 program does not support autoattach, bpfto !! 137 Detach bpf program *PROG* (with type specified by 154 for that program instead. !! 138 *ATTACH_TYPE*). Most *ATTACH_TYPEs* require a *MAP* 155 !! 139 parameter, with the exception of *flow_dissector* which is 156 Note: *PATH* must be located in *bpffs* mo !! 140 detached from the current networking name space. 157 character ('.'), which is reserved for fut !! 141 158 !! 142 **bpftool prog tracelog** 159 bpftool prog attach *PROG* *ATTACH_TYPE* [*MAP !! 143 Dump the trace pipe of the system to the console (stdout). 160 Attach bpf program *PROG* (with type speci !! 144 Hit <Ctrl+C> to stop printing. BPF programs can write to this 161 *ATTACH_TYPEs* require a *MAP* parameter, !! 145 trace pipe at runtime with the **bpf_trace_printk()** helper. 162 *flow_dissector* which is attached to curr !! 146 This should be used only for debugging purposes. For 163 !! 147 streaming data from BPF programs to user space, one can use 164 bpftool prog detach *PROG* *ATTACH_TYPE* [*MAP !! 148 perf events (see also **bpftool-map**\ (8)). 165 Detach bpf program *PROG* (with type speci !! 149 166 *ATTACH_TYPEs* require a *MAP* parameter, !! 150 **bpftool prog run** *PROG* **data_in** *FILE* [**data_out** *FILE* [**data_size_out** *L*]] [**ctx_in** *FILE* [**ctx_out** *FILE* [**ctx_size_out** *M*]]] [**repeat** *N*] 167 *flow_dissector* which is detached from th !! 151 Run BPF program *PROG* in the kernel testing infrastructure 168 !! 152 for BPF, meaning that the program works on the data and 169 bpftool prog tracelog !! 153 context provided by the user, and not on actual packets or 170 Dump the trace pipe of the system to the c !! 154 monitored functions etc. Return value and duration for the 171 stop printing. BPF programs can write to t !! 155 test run are printed out to the console. 172 the **bpf_trace_printk**\ () helper. This !! 156 173 purposes. For streaming data from BPF prog !! 157 Input data is read from the *FILE* passed with **data_in**. 174 perf events (see also **bpftool-map**\ (8) !! 158 If this *FILE* is "**-**", input data is read from standard 175 !! 159 input. Input context, if any, is read from *FILE* passed with 176 bpftool prog run *PROG* data_in *FILE* [data_o !! 160 **ctx_in**. Again, "**-**" can be used to read from standard 177 Run BPF program *PROG* in the kernel testi !! 161 input, but only if standard input is not already in use for 178 meaning that the program works on the data !! 162 input data. If a *FILE* is passed with **data_out**, output 179 user, and not on actual packets or monitor !! 163 data is written to that file. Similarly, output context is 180 and duration for the test run are printed !! 164 written to the *FILE* passed with **ctx_out**. For both 181 !! 165 output flows, "**-**" can be used to print to the standard 182 Input data is read from the *FILE* passed !! 166 output (as plain text, or JSON if relevant option was 183 is "**-**", input data is read from standa !! 167 passed). If output keywords are omitted, output data and 184 is read from *FILE* passed with **ctx_in** !! 168 context are discarded. Keywords **data_size_out** and 185 read from standard input, but only if stan !! 169 **ctx_size_out** are used to pass the size (in bytes) for the 186 for input data. If a *FILE* is passed with !! 170 output buffers to the kernel, although the default of 32 kB 187 written to that file. Similarly, output co !! 171 should be more than enough for most cases. 188 passed with **ctx_out**. For both output f !! 172 189 print to the standard output (as plain tex !! 173 Keyword **repeat** is used to indicate the number of 190 passed). If output keywords are omitted, o !! 174 consecutive runs to perform. Note that output data and 191 discarded. Keywords **data_size_out** and !! 175 context printed to files correspond to the last of those 192 the size (in bytes) for the output buffers !! 176 runs. The duration printed out at the end of the runs is an 193 default of 32 kB should be more than enoug !! 177 average over all runs performed by the command. 194 !! 178 195 Keyword **repeat** is used to indicate the !! 179 Not all program types support test run. Among those which do, 196 perform. Note that output data and context !! 180 not all of them can take the **ctx_in**/**ctx_out** 197 the last of those runs. The duration print !! 181 arguments. bpftool does not perform checks on program types. 198 an average over all runs performed by the << 199 << 200 Not all program types support test run. Am << 201 them can take the **ctx_in**/**ctx_out** a << 202 perform checks on program types. << 203 << 204 bpftool prog profile *PROG* [duration *DURATIO << 205 Profile *METRICs* for bpf program *PROG* f << 206 user hits <Ctrl+C>. *DURATION* is optional << 207 the profiling will run up to **UINT_MAX** << 208 182 209 bpftool prog help !! 183 **bpftool prog help** 210 Print short help message. !! 184 Print short help message. 211 185 212 OPTIONS 186 OPTIONS 213 ======= 187 ======= 214 .. include:: common_options.rst !! 188 -h, --help 215 !! 189 Print short generic help message (similar to **bpftool help**). 216 -f, --bpffs << 217 When showing BPF programs, show file names << 218 190 219 -m, --mapcompat !! 191 -V, --version 220 Allow loading maps with unknown map defini !! 192 Print version number (similar to **bpftool version**). 221 193 222 -n, --nomount !! 194 -j, --json 223 Do not automatically attempt to mount any !! 195 Generate JSON output. For commands that cannot produce JSON, this 224 tracefs or BPF virtual file system) when n !! 196 option has no effect. 225 !! 197 226 -L, --use-loader !! 198 -p, --pretty 227 Load program as a "loader" program. This i !! 199 Generate human-readable JSON output. Implies **-j**. 228 of such programs. When this option is in u !! 200 229 programs from the object file into the ker !! 201 -f, --bpffs 230 (therefore, the *PATH* must not be provide !! 202 When showing BPF programs, show file names of pinned 231 !! 203 programs. 232 When combined with the **-d**\ \|\ **--deb !! 204 233 messages are generated, and the execution !! 205 -m, --mapcompat 234 the **bpf_trace_printk**\ () helper to log !! 206 Allow loading maps with unknown map definitions. 235 creating the maps, and loading the program !! 207 236 as a way to dump those messages). !! 208 -n, --nomount >> 209 Do not automatically attempt to mount any virtual file system >> 210 (such as tracefs or BPF virtual file system) when necessary. >> 211 >> 212 -d, --debug >> 213 Print all logs available, even debug-level information. This >> 214 includes logs from libbpf as well as from the verifier, when >> 215 attempting to load programs. 237 216 238 EXAMPLES 217 EXAMPLES 239 ======== 218 ======== 240 **# bpftool prog show** 219 **# bpftool prog show** 241 220 242 :: 221 :: 243 222 244 10: xdp name some_prog tag 005a3d2123620 223 10: xdp name some_prog tag 005a3d2123620c8b gpl run_time_ns 81632 run_cnt 10 245 loaded_at 2017-09-29T20:11:00+0000 224 loaded_at 2017-09-29T20:11:00+0000 uid 0 246 xlated 528B jited 370B memlock 4 225 xlated 528B jited 370B memlock 4096B map_ids 10 247 pids systemd(1) << 248 226 249 **# bpftool --json --pretty prog show** 227 **# bpftool --json --pretty prog show** 250 228 251 :: 229 :: 252 230 253 [{ 231 [{ 254 "id": 10, 232 "id": 10, 255 "type": "xdp", 233 "type": "xdp", 256 "tag": "005a3d2123620c8b", 234 "tag": "005a3d2123620c8b", 257 "gpl_compatible": true, 235 "gpl_compatible": true, 258 "run_time_ns": 81632, 236 "run_time_ns": 81632, 259 "run_cnt": 10, 237 "run_cnt": 10, 260 "loaded_at": 1506715860, 238 "loaded_at": 1506715860, 261 "uid": 0, 239 "uid": 0, 262 "bytes_xlated": 528, 240 "bytes_xlated": 528, 263 "jited": true, 241 "jited": true, 264 "bytes_jited": 370, 242 "bytes_jited": 370, 265 "bytes_memlock": 4096, 243 "bytes_memlock": 4096, 266 "map_ids": [10 244 "map_ids": [10 267 ], << 268 "pids": [{ << 269 "pid": 1, << 270 "comm": "systemd" << 271 } << 272 ] 245 ] 273 } 246 } 274 ] 247 ] 275 248 276 | 249 | 277 | **# bpftool prog dump xlated id 10 file /tmp 250 | **# bpftool prog dump xlated id 10 file /tmp/t** 278 | **$ ls -l /tmp/t** !! 251 | **# ls -l /tmp/t** 279 252 280 :: 253 :: 281 254 282 -rw------- 1 root root 560 Jul 22 01:42 /t 255 -rw------- 1 root root 560 Jul 22 01:42 /tmp/t 283 256 284 **# bpftool prog dump jited tag 005a3d2123620c 257 **# bpftool prog dump jited tag 005a3d2123620c8b** 285 258 286 :: 259 :: 287 260 288 0: push %rbp 261 0: push %rbp 289 1: mov %rsp,%rbp 262 1: mov %rsp,%rbp 290 2: sub $0x228,%rsp 263 2: sub $0x228,%rsp 291 3: sub $0x28,%rbp 264 3: sub $0x28,%rbp 292 4: mov %rbx,0x0(%rbp) 265 4: mov %rbx,0x0(%rbp) 293 266 294 | 267 | 295 | **# mount -t bpf none /sys/fs/bpf/** 268 | **# mount -t bpf none /sys/fs/bpf/** 296 | **# bpftool prog pin id 10 /sys/fs/bpf/prog* 269 | **# bpftool prog pin id 10 /sys/fs/bpf/prog** 297 | **# bpftool prog load ./my_prog.o /sys/fs/bp 270 | **# bpftool prog load ./my_prog.o /sys/fs/bpf/prog2** 298 | **# ls -l /sys/fs/bpf/** 271 | **# ls -l /sys/fs/bpf/** 299 272 300 :: 273 :: 301 274 302 -rw------- 1 root root 0 Jul 22 01:43 prog 275 -rw------- 1 root root 0 Jul 22 01:43 prog 303 -rw------- 1 root root 0 Jul 22 01:44 prog 276 -rw------- 1 root root 0 Jul 22 01:44 prog2 304 277 305 **# bpftool prog dump jited pinned /sys/fs/bpf 278 **# bpftool prog dump jited pinned /sys/fs/bpf/prog opcodes** 306 279 307 :: 280 :: 308 281 309 0: push %rbp 282 0: push %rbp 310 55 283 55 311 1: mov %rsp,%rbp 284 1: mov %rsp,%rbp 312 48 89 e5 285 48 89 e5 313 4: sub $0x228,%rsp 286 4: sub $0x228,%rsp 314 48 81 ec 28 02 00 00 287 48 81 ec 28 02 00 00 315 b: sub $0x28,%rbp 288 b: sub $0x28,%rbp 316 48 83 ed 28 289 48 83 ed 28 317 f: mov %rbx,0x0(%rbp) 290 f: mov %rbx,0x0(%rbp) 318 48 89 5d 00 291 48 89 5d 00 319 292 320 | 293 | 321 | **# bpftool prog load xdp1_kern.o /sys/fs/bp 294 | **# bpftool prog load xdp1_kern.o /sys/fs/bpf/xdp1 type xdp map name rxcnt id 7** 322 | **# bpftool prog show pinned /sys/fs/bpf/xdp 295 | **# bpftool prog show pinned /sys/fs/bpf/xdp1** 323 296 324 :: 297 :: 325 298 326 9: xdp name xdp_prog1 tag 539ec6ce11b52f 299 9: xdp name xdp_prog1 tag 539ec6ce11b52f98 gpl 327 loaded_at 2018-06-25T16:17:31-0700 300 loaded_at 2018-06-25T16:17:31-0700 uid 0 328 xlated 488B jited 336B memlock 4 301 xlated 488B jited 336B memlock 4096B map_ids 7 329 302 330 **# rm /sys/fs/bpf/xdp1** 303 **# rm /sys/fs/bpf/xdp1** 331 304 332 | !! 305 SEE ALSO 333 | **# bpftool prog profile id 337 duration 10 !! 306 ======== 334 !! 307 **bpf**\ (2), 335 :: !! 308 **bpf-helpers**\ (7), 336 !! 309 **bpftool**\ (8), 337 51397 run_cnt !! 310 **bpftool-map**\ (8), 338 40176203 cycles !! 311 **bpftool-cgroup**\ (8), 339 42518139 instructions # 1.06 insns !! 312 **bpftool-feature**\ (8), 340 123 llc_misses # 2.89 LLC mi !! 313 **bpftool-net**\ (8), 341 !! 314 **bpftool-perf**\ (8), 342 | !! 315 **bpftool-btf**\ (8) 343 | Output below is for the trace logs. << 344 | Run in separate terminals: << 345 | **# bpftool prog tracelog** << 346 | **# bpftool prog load -L -d file.o** << 347 << 348 :: << 349 << 350 bpftool-620059 [004] d... 2634685.517903: << 351 bpftool-620059 [004] d... 2634685.517912: << 352 bpftool-620059 [004] d... 2634685.517997: << 353 bpftool-620059 [004] d... 2634685.517999: <<
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.