|      **bpftool** **prog detach** *PROG* *ATTACH_TYPE* [*MAP*]
 |      **bpftool** **prog tracelog**
 |      **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*]
+|      **bpftool** **prog profile** *PROG* [**duration** *DURATION*] *METRICs*
 |      **bpftool** **prog help**
 |
 |      *MAP* := { **id** *MAP_ID* | **pinned** *FILE* }
 |       *ATTACH_TYPE* := {
 |              **msg_verdict** | **stream_verdict** | **stream_parser** | **flow_dissector**
 |      }
+|      *METRIC* := {
+|              **cycles** | **instructions** | **l1d_loads** | **llc_misses**
+|      }
 
 
 DESCRIPTION
                  not all of them can take the **ctx_in**/**ctx_out**
                  arguments. bpftool does not perform checks on program types.
 
+       **bpftool prog profile** *PROG* [**duration** *DURATION*] *METRICs*
+                 Profile *METRICs* for bpf program *PROG* for *DURATION*
+                 seconds or until user hits Ctrl-C. *DURATION* is optional.
+                 If *DURATION* is not specified, the profiling will run up to
+                 UINT_MAX seconds.
+
        **bpftool prog help**
                  Print short help message.
 
 
 **# rm /sys/fs/bpf/xdp1**
 
+|
+| **# bpftool prog profile id 337 duration 10 cycles instructions llc_misses**
+
+::
+         51397 run_cnt
+      40176203 cycles                                                 (83.05%)
+      42518139 instructions    #   1.06 insns per cycle               (83.39%)
+           123 llc_misses      #   2.89 LLC misses per million insns  (83.15%)
+
 SEE ALSO
 ========
        **bpf**\ (2),