__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

www-data@216.73.216.10: ~ $
Demonstrations of funclatency, the Linux eBPF/bcc version.


Timing the do_sys_open() kernel function until Ctrl-C:

# ./funclatency do_sys_open
Tracing do_sys_open... Hit Ctrl-C to end.
^C
     nsecs           : count     distribution
       0 -> 1        : 0        |                                      |
       2 -> 3        : 0        |                                      |
       4 -> 7        : 0        |                                      |
       8 -> 15       : 0        |                                      |
      16 -> 31       : 0        |                                      |
      32 -> 63       : 0        |                                      |
      64 -> 127      : 0        |                                      |
     128 -> 255      : 0        |                                      |
     256 -> 511      : 0        |                                      |
     512 -> 1023     : 0        |                                      |
    1024 -> 2047     : 0        |                                      |
    2048 -> 4095     : 124      |****************                      |
    4096 -> 8191     : 291      |**************************************|
    8192 -> 16383    : 36       |****                                  |
   16384 -> 32767    : 16       |**                                    |
   32768 -> 65535    : 8        |*                                     |
   65536 -> 131071   : 0        |                                      |
  131072 -> 262143   : 0        |                                      |
  262144 -> 524287   : 0        |                                      |
  524288 -> 1048575  : 0        |                                      |
 1048576 -> 2097151  : 0        |                                      |
 2097152 -> 4194303  : 1        |                                      |

avg = 13746 nsecs, total: 6543360 nsecs, count: 476

Detaching...

The output shows a histogram of function latency (call time), measured from when
the function began executing (was called) to when it finished (returned).

This example output shows that most of the time, do_sys_open() took between
2048 and 65536 nanoseconds (2 to 65 microseconds). The peak of this distribution
shows 291 calls of between 4096 and 8191 nanoseconds. There was also one
occurrence, an outlier, in the 2 to 4 millisecond range.

How this works: the function entry and return are traced using the kernel kprobe
and kretprobe tracer. Timestamps are collected, the delta time calculated, which
is the bucketized and stored as an in-kernel histogram for efficiency. The
histogram is visible in the output: it's the "count" column; everything else is
decoration. Only the count column is copied to user-level on output. This is an
efficient way to time kernel functions and examine their latency distribution.


Now trace a user function, pthread_mutex_lock in libpthread, to determine if
there is considerable lock contention:

# ./funclatency pthread:pthread_mutex_lock -p $(pidof contentions)
Tracing 1 function for "pthread:pthread_mutex_lock"... Hit Ctrl-C to end.
     nsecs               : count     distribution
         0 -> 1          : 0        |                                        |
         2 -> 3          : 0        |                                        |
         4 -> 7          : 0        |                                        |
         8 -> 15         : 0        |                                        |
        16 -> 31         : 0        |                                        |
        32 -> 63         : 0        |                                        |
        64 -> 127        : 0        |                                        |
       128 -> 255        : 0        |                                        |
       256 -> 511        : 0        |                                        |
       512 -> 1023       : 0        |                                        |
      1024 -> 2047       : 0        |                                        |
      2048 -> 4095       : 508967   |****************************************|
      4096 -> 8191       : 70072    |*****                                   |
      8192 -> 16383      : 27686    |**                                      |
     16384 -> 32767      : 5075     |                                        |
     32768 -> 65535      : 2318     |                                        |
     65536 -> 131071     : 581      |                                        |
    131072 -> 262143     : 38       |                                        |
    262144 -> 524287     : 5        |                                        |
    524288 -> 1048575    : 1        |                                        |
   1048576 -> 2097151    : 9        |                                        |

avg = 4317 nsecs, total: 2654426112 nsecs, count: 614752

Detaching...

It seems that most calls to pthread_mutex_lock completed rather quickly (in
under 4us), but there were some cases of considerable contention, sometimes
over a full millisecond.


Run a quick-and-dirty profiler over all the functions in an executable:
# ./funclatency /home/user/primes:* -p $(pidof primes) -F
Tracing 15 functions for "/home/user/primes:*"... Hit Ctrl-C to end.
^C

Function = is_prime [6556]
     nsecs               : count     distribution
         0 -> 1          : 0        |                                        |
         2 -> 3          : 0        |                                        |
         4 -> 7          : 0        |                                        |
         8 -> 15         : 0        |                                        |
        16 -> 31         : 0        |                                        |
        32 -> 63         : 0        |                                        |
        64 -> 127        : 0        |                                        |
       128 -> 255        : 0        |                                        |
       256 -> 511        : 0        |                                        |
       512 -> 1023       : 0        |                                        |
      1024 -> 2047       : 0        |                                        |
      2048 -> 4095       : 1495322  |****************************************|
      4096 -> 8191       : 95744    |**                                      |
      8192 -> 16383      : 9926     |                                        |
     16384 -> 32767      : 3070     |                                        |
     32768 -> 65535      : 1415     |                                        |
     65536 -> 131071     : 112      |                                        |
    131072 -> 262143     : 9        |                                        |
    262144 -> 524287     : 3        |                                        |
    524288 -> 1048575    : 0        |                                        |
   1048576 -> 2097151    : 8        |                                        |

Function = insert_result [6556]
     nsecs               : count     distribution
         0 -> 1          : 0        |                                        |
         2 -> 3          : 0        |                                        |
         4 -> 7          : 0        |                                        |
         8 -> 15         : 0        |                                        |
        16 -> 31         : 0        |                                        |
        32 -> 63         : 0        |                                        |
        64 -> 127        : 0        |                                        |
       128 -> 255        : 0        |                                        |
       256 -> 511        : 0        |                                        |
       512 -> 1023       : 0        |                                        |
      1024 -> 2047       : 0        |                                        |
      2048 -> 4095       : 111047   |****************************************|
      4096 -> 8191       : 3998     |*                                       |
      8192 -> 16383      : 720      |                                        |
     16384 -> 32767      : 238      |                                        |
     32768 -> 65535      : 106      |                                        |
     65536 -> 131071     : 5        |                                        |
    131072 -> 262143     : 4        |                                        |

avg = 3404 nsecs, total: 5862276096 nsecs, count: 1721727

Detaching...

From the results, we can see that the is_prime function has something resembling
an exponential distribution -- very few primes take a very long time to test,
while most numbers are verified as prime or composite in less than 4us. The
insert_result function exhibits a similar phenomenon, likely due to contention
over a shared results container.


Now vfs_read() is traced, and a microseconds histogram printed:

# ./funclatency -u vfs_read
Tracing vfs_read... Hit Ctrl-C to end.
^C
     usecs           : count     distribution
       0 -> 1        : 1143     |**************************************|
       2 -> 3        : 420      |*************                         |
       4 -> 7        : 159      |*****                                 |
       8 -> 15       : 295      |*********                             |
      16 -> 31       : 25       |                                      |
      32 -> 63       : 5        |                                      |
      64 -> 127      : 1        |                                      |
     128 -> 255      : 0        |                                      |
     256 -> 511      : 0        |                                      |
     512 -> 1023     : 0        |                                      |
    1024 -> 2047     : 1        |                                      |
    2048 -> 4095     : 0        |                                      |
    4096 -> 8191     : 5        |                                      |
    8192 -> 16383    : 0        |                                      |
   16384 -> 32767    : 0        |                                      |
   32768 -> 65535    : 0        |                                      |
   65536 -> 131071   : 7        |                                      |
  131072 -> 262143   : 7        |                                      |
  262144 -> 524287   : 3        |                                      |
  524288 -> 1048575  : 7        |                                      |

avg = 4229 nsecs, total: 8789145 nsecs, count: 2078

Detaching...

This shows a bimodal distribution. Many vfs_read() calls were faster than 15
microseconds, however, there was also a small handful between 65 milliseconds
and 1 second, seen at the bottom of the table. These are likely network reads
from SSH, waiting on interactive keystrokes.


Tracing do_nanosleep() in milliseconds:

# ./funclatency -m do_nanosleep
Tracing do_nanosleep... Hit Ctrl-C to end.
^C
     msecs           : count     distribution
       0 -> 1        : 0        |                                      |
       2 -> 3        : 0        |                                      |
       4 -> 7        : 0        |                                      |
       8 -> 15       : 0        |                                      |
      16 -> 31       : 0        |                                      |
      32 -> 63       : 0        |                                      |
      64 -> 127      : 0        |                                      |
     128 -> 255      : 0        |                                      |
     256 -> 511      : 0        |                                      |
     512 -> 1023     : 328      |**************************************|
    1024 -> 2047     : 0        |                                      |
    2048 -> 4095     : 0        |                                      |
    4096 -> 8191     : 32       |***                                   |
    8192 -> 16383    : 0        |                                      |
   16384 -> 32767    : 0        |                                      |
   32768 -> 65535    : 2        |                                      |

avg = 1510 nsecs, total: 546816 nsecs, count: 326

Detaching...

This looks like it has found threads that are sleeping every 1, 5, and 60
seconds.


An interval can be provided using -i, and timestamps added using -T. For
example, tracing vfs_read() latency in milliseconds and printing output
every 5 seconds:

# ./funclatency -mTi 5 vfs_read
Tracing vfs_read... Hit Ctrl-C to end.

20:10:08
     msecs           : count     distribution
       0 -> 1        : 1500     |*************************************+|
       2 -> 3        : 3        |                                      |
       4 -> 7        : 1        |                                      |
       8 -> 15       : 2        |                                      |
      16 -> 31       : 0        |                                      |
      32 -> 63       : 0        |                                      |
      64 -> 127      : 4        |                                      |
     128 -> 255      : 3        |                                      |
     256 -> 511      : 1        |                                      |
     512 -> 1023     : 7        |                                      |

avg = 5 nsecs, total: 8259 nsecs, count: 1521

20:10:13
     msecs           : count     distribution
       0 -> 1        : 1251     |*************************************+|
       2 -> 3        : 3        |                                      |
       4 -> 7        : 2        |                                      |
       8 -> 15       : 0        |                                      |
      16 -> 31       : 2        |                                      |
      32 -> 63       : 3        |                                      |
      64 -> 127      : 5        |                                      |
     128 -> 255      : 5        |                                      |
     256 -> 511      : 3        |                                      |
     512 -> 1023     : 6        |                                      |
    1024 -> 2047     : 2        |                                      |

avg = 9 nsecs, total: 11736 nsecs, count: 1282

20:10:18
     msecs           : count     distribution
       0 -> 1        : 1265     |*************************************+|
       2 -> 3        : 0        |                                      |
       4 -> 7        : 5        |                                      |
       8 -> 15       : 9        |                                      |
      16 -> 31       : 7        |                                      |
      32 -> 63       : 1        |                                      |
      64 -> 127      : 2        |                                      |
     128 -> 255      : 3        |                                      |
     256 -> 511      : 5        |                                      |
     512 -> 1023     : 5        |                                      |
    1024 -> 2047     : 0        |                                      |
    2048 -> 4095     : 1        |                                      |

avg = 8 nsecs, total: 11219 nsecs, count: 1303

^C
20:10:20
     msecs           : count     distribution
       0 -> 1        : 249      |*************************************+|
       2 -> 3        : 0        |                                      |
       4 -> 7        : 0        |                                      |
       8 -> 15       : 1        |                                      |
      16 -> 31       : 0        |                                      |
      32 -> 63       : 0        |                                      |
      64 -> 127      : 0        |                                      |
     128 -> 255      : 0        |                                      |
     256 -> 511      : 0        |                                      |
     512 -> 1023     : 1        |                                      |

avg = 4 nsecs, total: 1029 nsecs, count: 251

Detaching...


A single process can be traced, which filters in-kernel for efficiency. Here,
the vfs_read() function is timed as milliseconds for PID 17064, which is a
bash shell:

# ./funclatency -mp 17064 vfs_read
Tracing vfs_read... Hit Ctrl-C to end.
^C
     msecs           : count     distribution
       0 -> 1        : 1        |**                                    |
       2 -> 3        : 0        |                                      |
       4 -> 7        : 0        |                                      |
       8 -> 15       : 1        |**                                    |
      16 -> 31       : 2        |*****                                 |
      32 -> 63       : 0        |                                      |
      64 -> 127      : 13       |**************************************|
     128 -> 255      : 10       |*****************************         |
     256 -> 511      : 4        |***********                           |

avg = 153 nsecs, total: 4765 nsecs, count: 31

Detaching...

The distribution between 64 and 511 milliseconds shows keystroke latency.


The -F option can be used to print a histogram per function. Eg:

# ./funclatency -uF 'vfs_r*'
Tracing 5 functions for "vfs_r*"... Hit Ctrl-C to end.
^C

Function = vfs_read
     usecs               : count     distribution
         0 -> 1          : 1044     |****************************************|
         2 -> 3          : 383      |**************                          |
         4 -> 7          : 76       |**                                      |
         8 -> 15         : 41       |*                                       |
        16 -> 31         : 26       |                                        |
        32 -> 63         : 0        |                                        |
        64 -> 127        : 1        |                                        |
       128 -> 255        : 0        |                                        |
       256 -> 511        : 0        |                                        |
       512 -> 1023       : 0        |                                        |
      1024 -> 2047       : 0        |                                        |
      2048 -> 4095       : 4        |                                        |
      4096 -> 8191       : 2        |                                        |
      8192 -> 16383      : 0        |                                        |
     16384 -> 32767      : 0        |                                        |
     32768 -> 65535      : 2        |                                        |
     65536 -> 131071     : 5        |                                        |
    131072 -> 262143     : 5        |                                        |
    262144 -> 524287     : 3        |                                        |
    524288 -> 1048575    : 7        |                                        |

Function = vfs_rename
     usecs               : count     distribution
         0 -> 1          : 2        |****                                    |
         2 -> 3          : 2        |****                                    |
         4 -> 7          : 2        |****                                    |
         8 -> 15         : 0        |                                        |
        16 -> 31         : 6        |*************                           |
        32 -> 63         : 18       |****************************************|

avg = 5087 nsecs, total: 8287001 nsecs, count: 1629

Detaching...



USAGE message:

# ./funclatency -h
usage: funclatency [-h] [-p PID] [-i INTERVAL] [-T] [-u] [-m] [-F] [-r] [-v]
                   pattern

Time functions and print latency as a histogram

positional arguments:
  pattern               search expression for functions

optional arguments:
  -h, --help            show this help message and exit
  -p PID, --pid PID     trace this PID only
  -i INTERVAL, --interval INTERVAL
                        summary interval, in seconds
  -d DURATION, --duration DURATION
			total duration of trace, in seconds
  -T, --timestamp       include timestamp on output
  -u, --microseconds    microsecond histogram
  -m, --milliseconds    millisecond histogram
  -F, --function        show a separate histogram per function
  -r, --regexp          use regular expressions. Default is "*" wildcards
                        only.
  -l LEVEL, --level LEVEL
                        set the level of nested or recursive functions
  -v, --verbose         print the BPF program (for debugging purposes)

examples:
    ./funclatency do_sys_open       # time the do_sys_open() kernel function
    ./funclatency c:read            # time the read() C library function
    ./funclatency -u vfs_read       # time vfs_read(), in microseconds
    ./funclatency -m do_nanosleep   # time do_nanosleep(), in milliseconds
    ./funclatency -i 2 -d 10 c:open # output every 2 seconds, for duration 10s
    ./funclatency -mTi 5 vfs_read   # output every 5 seconds, with timestamps
    ./funclatency -p 181 vfs_read   # time process 181 only
    ./funclatency 'vfs_fstat*'      # time both vfs_fstat() and vfs_fstatat()
    ./funclatency 'c:*printf'       # time the *printf family of functions
    ./funclatency -F 'vfs_r*'       # show one histogram per matched function

Filemanager

Name Type Size Permission Actions
lib Folder 0755
argdist_example.txt File 22.49 KB 0644
bashreadline_example.txt File 882 B 0644
bindsnoop_example.txt File 4.42 KB 0644
biolatency_example.txt File 23.46 KB 0644
biolatpcts_example.txt File 2.97 KB 0644
biopattern_example.txt File 1.37 KB 0644
biosnoop_example.txt File 3.47 KB 0644
biotop_example.txt File 9.11 KB 0644
bitesize_example.txt File 4.98 KB 0644
bpflist_example.txt File 2.13 KB 0644
btrfsdist_example.txt File 9.32 KB 0644
btrfsslower_example.txt File 6.65 KB 0644
cachestat_example.txt File 3.92 KB 0644
cachetop_example.txt File 3.83 KB 0644
capable_example.txt File 6.5 KB 0644
cobjnew_example.txt File 2.97 KB 0644
compactsnoop_example.txt File 9.92 KB 0644
cpudist_example.txt File 16.48 KB 0644
cpuunclaimed_example.txt File 15.2 KB 0644
criticalstat_example.txt File 4.81 KB 0644
cthreads_example.txt File 2.08 KB 0644
dbslower_example.txt File 3.89 KB 0644
dbstat_example.txt File 6.5 KB 0644
dcsnoop_example.txt File 4.27 KB 0644
dcstat_example.txt File 3.26 KB 0644
deadlock_example.txt File 16.25 KB 0644
dirtop_example.txt File 4.98 KB 0644
drsnoop_example.txt File 5 KB 0644
execsnoop_example.txt File 6.64 KB 0644
exitsnoop_example.txt File 6.22 KB 0644
ext4dist_example.txt File 8.78 KB 0644
ext4slower_example.txt File 11.07 KB 0644
filegone_example.txt File 743 B 0644
filelife_example.txt File 2.04 KB 0644
fileslower_example.txt File 5.58 KB 0644
filetop_example.txt File 6.8 KB 0644
funccount_example.txt File 13.29 KB 0644
funcinterval_example.txt File 15.28 KB 0644
funclatency_example.txt File 20.98 KB 0644
funcslower_example.txt File 6.63 KB 0644
gethostlatency_example.txt File 1.29 KB 0644
hardirqs_example.txt File 37.05 KB 0644
inject_example.txt File 6.67 KB 0644
javacalls_example.txt File 3.91 KB 0644
javaflow_example.txt File 5.88 KB 0644
javagc_example.txt File 3.78 KB 0644
javaobjnew_example.txt File 2.97 KB 0644
javastat_example.txt File 2.98 KB 0644
javathreads_example.txt File 2.08 KB 0644
killsnoop_example.txt File 1.31 KB 0644
klockstat_example.txt File 8.34 KB 0644
kvmexit_example.txt File 11.63 KB 0644
llcstat_example.txt File 3.24 KB 0644
mdflush_example.txt File 1.74 KB 0644
memleak_example.txt File 10.02 KB 0644
mountsnoop_example.txt File 1.45 KB 0644
mysqld_qslower_example.txt File 2.3 KB 0644
netqtop_example.txt File 12.2 KB 0644
nfsdist_example.txt File 8.31 KB 0644
nfsslower_example.txt File 7.68 KB 0644
nodegc_example.txt File 3.78 KB 0644
nodestat_example.txt File 2.98 KB 0644
offcputime_example.txt File 19.2 KB 0644
offwaketime_example.txt File 37.36 KB 0644
oomkill_example.txt File 1.88 KB 0644
opensnoop_example.txt File 10.33 KB 0644
perlcalls_example.txt File 3.91 KB 0644
perlflow_example.txt File 5.88 KB 0644
perlstat_example.txt File 2.98 KB 0644
phpcalls_example.txt File 3.91 KB 0644
phpflow_example.txt File 5.88 KB 0644
phpstat_example.txt File 2.98 KB 0644
pidpersec_example.txt File 677 B 0644
ppchcalls_example.txt File 6.93 KB 0644
profile_example.txt File 31.08 KB 0644
pythoncalls_example.txt File 3.91 KB 0644
pythonflow_example.txt File 5.88 KB 0644
pythongc_example.txt File 3.78 KB 0644
pythonstat_example.txt File 2.98 KB 0644
rdmaucma_example.txt File 1.94 KB 0644
readahead_example.txt File 3.17 KB 0644
reset-trace_example.txt File 9.15 KB 0644
rubycalls_example.txt File 3.91 KB 0644
rubyflow_example.txt File 5.88 KB 0644
rubygc_example.txt File 3.78 KB 0644
rubyobjnew_example.txt File 2.97 KB 0644
rubystat_example.txt File 2.98 KB 0644
runqlat_example.txt File 31.3 KB 0644
runqlen_example.txt File 11.85 KB 0644
runqslower_example.txt File 2.13 KB 0644
shmsnoop_example.txt File 2.73 KB 0644
slabratetop_example.txt File 5.22 KB 0644
sofdsnoop_example.txt File 3.14 KB 0644
softirqs_example.txt File 11.02 KB 0644
solisten_example.txt File 2.3 KB 0644
sslsniff_example.txt File 6.74 KB 0644
stackcount_example.txt File 21.45 KB 0644
statsnoop_example.txt File 3.02 KB 0644
swapin.txt File 2.57 KB 0644
swapin_example.txt File 1.39 KB 0644
syncsnoop_example.txt File 387 B 0644
syscount_example.txt File 6.27 KB 0644
tclcalls_example.txt File 3.91 KB 0644
tclflow_example.txt File 5.88 KB 0644
tclobjnew_example.txt File 2.97 KB 0644
tclstat_example.txt File 2.98 KB 0644
tcpaccept_example.txt File 2.76 KB 0644
tcpcong_example.txt File 33.31 KB 0644
tcpconnect_example.txt File 6.27 KB 0644
tcpconnlat_example.txt File 2.55 KB 0644
tcpdrop_example.txt File 1.95 KB 0644
tcplife_example.txt File 6.83 KB 0644
tcpretrans_example.txt File 3.85 KB 0644
tcprtt_example.txt File 9.83 KB 0644
tcpstates_example.txt File 2.84 KB 0644
tcpsubnet_example.txt File 5.37 KB 0644
tcpsynbl_example.txt File 1.15 KB 0644
tcptop_example.txt File 5.75 KB 0644
tcptracer_example.txt File 1.98 KB 0644
threadsnoop_example.txt File 1.07 KB 0644
tplist_example.txt File 4.4 KB 0644
trace_example.txt File 21.62 KB 0644
ttysnoop_example.txt File 3.24 KB 0644
vfscount_example.txt File 2.17 KB 0644
vfsstat_example.txt File 1.66 KB 0644
virtiostat_example.txt File 2.62 KB 0644
wakeuptime_example.txt File 33.25 KB 0644
xfsdist_example.txt File 6.77 KB 0644
xfsslower_example.txt File 6.91 KB 0644
zfsdist_example.txt File 9.52 KB 0644
zfsslower_example.txt File 7.37 KB 0644
Filemanager