examples: add winbindd.stp and a shell script to generate it
Usage:
Instrument all winbindd processes:
# stap winbindd.stp
Instrument a specific winbindd process:
# stap -x PID winbindd.stp
Example output:
# stap winbindd.stp
Collecting data, press ctrl-C to stop... ^C
Winbind request service time
============================
winbindd_getpwnam_send count: 99, sum: 6229 ms (min: 2669 us, avg: 62921 us, max: 157907 us)
Winbind request runtime
=======================
winbindd_getpwnam_send count: 99, sum: 3 ms (min: 21 us, avg: 36 us, max: 77 us)
Winbind domain-child request service time
=========================================
_wbint_LookupName count: 99, sum: 1403 ms (min: 619 us, avg: 14181 us, max: 136613 us)
_wbint_GetNssInfo count: 99, sum: 0 ms (min: 2 us, avg: 3 us, max: 6 us)
_wbint_LookupSid count: 102, sum: 49 ms (min: 13 us, avg: 481 us, max: 6315 us)
_wbint_Sids2UnixIDs count: 101, sum: 2 ms (min: 18 us, avg: 29 us, max: 49 us)
_wbint_LookupSids count: 101, sum: 84 ms (min: 411 us, avg: 838 us, max: 3524 us)
Winbind domain-child AD-backend service time
============================================
sid_to_name count: 56, sum: 45 ms (min: 431 us, avg: 816 us, max: 6275 us)
sequence_number count: 12, sum: 1209 ms (min: 46618 us, avg: 100803 us, max: 131439 us)
name_to_sid count: 99, sum: 176 ms (min: 547 us, avg: 1781 us, max: 9866 us)
...
Regenerate winbindd.stp:
$ examples/systemtap/generate-winbindd.stp.sh
Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
Autobuild-User(master): Ralph Böhme <slow@samba.org>
Autobuild-Date(master): Wed Jul 19 16:20:56 CEST 2017 on sn-devel-144
2017-06-30 20:37:03 +03:00
#!/bin/sh
outfile = " $( dirname $0 ) /winbindd.stp "
2022-03-09 14:11:00 +03:00
child_funcs = " winbindd_dual_init_connection
2022-05-09 18:31:53 +03:00
_wbint_InitConnection
2022-03-09 14:11:00 +03:00
_wbint_Ping
2022-03-31 13:34:29 +03:00
_wbint_PamAuth
2022-02-25 16:53:16 +03:00
_wbint_PamAuthCrap
2022-05-09 17:12:41 +03:00
_wbint_PamLogOff
2022-05-09 17:46:35 +03:00
_wbint_PamAuthChangePassword
2022-05-09 17:22:33 +03:00
_wbint_PamAuthCrapChangePassword
2022-02-15 19:46:17 +03:00
_wbint_ListTrustedDomains
examples: add winbindd.stp and a shell script to generate it
Usage:
Instrument all winbindd processes:
# stap winbindd.stp
Instrument a specific winbindd process:
# stap -x PID winbindd.stp
Example output:
# stap winbindd.stp
Collecting data, press ctrl-C to stop... ^C
Winbind request service time
============================
winbindd_getpwnam_send count: 99, sum: 6229 ms (min: 2669 us, avg: 62921 us, max: 157907 us)
Winbind request runtime
=======================
winbindd_getpwnam_send count: 99, sum: 3 ms (min: 21 us, avg: 36 us, max: 77 us)
Winbind domain-child request service time
=========================================
_wbint_LookupName count: 99, sum: 1403 ms (min: 619 us, avg: 14181 us, max: 136613 us)
_wbint_GetNssInfo count: 99, sum: 0 ms (min: 2 us, avg: 3 us, max: 6 us)
_wbint_LookupSid count: 102, sum: 49 ms (min: 13 us, avg: 481 us, max: 6315 us)
_wbint_Sids2UnixIDs count: 101, sum: 2 ms (min: 18 us, avg: 29 us, max: 49 us)
_wbint_LookupSids count: 101, sum: 84 ms (min: 411 us, avg: 838 us, max: 3524 us)
Winbind domain-child AD-backend service time
============================================
sid_to_name count: 56, sum: 45 ms (min: 431 us, avg: 816 us, max: 6275 us)
sequence_number count: 12, sum: 1209 ms (min: 46618 us, avg: 100803 us, max: 131439 us)
name_to_sid count: 99, sum: 176 ms (min: 547 us, avg: 1781 us, max: 9866 us)
...
Regenerate winbindd.stp:
$ examples/systemtap/generate-winbindd.stp.sh
Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
Autobuild-User(master): Ralph Böhme <slow@samba.org>
Autobuild-Date(master): Wed Jul 19 16:20:56 CEST 2017 on sn-devel-144
2017-06-30 20:37:03 +03:00
_wbint_LookupSid
_wbint_LookupSids
_wbint_LookupName
_wbint_Sids2UnixIDs
_wbint_UnixIDs2Sids
_wbint_AllocateUid
_wbint_AllocateGid
_wbint_GetNssInfo
_wbint_LookupUserAliases
_wbint_LookupUserGroups
_wbint_QuerySequenceNumber
_wbint_LookupGroupMembers
_wbint_QueryGroupList
_wbint_QueryUserRidList
_wbint_DsGetDcName
_wbint_LookupRids
_wbint_CheckMachineAccount
_wbint_ChangeMachineAccount
_wbint_PingDc"
async_funcs = " wb_ping
winbindd_lookupsid
winbindd_lookupsids
winbindd_lookupname
winbindd_sids_to_xids
winbindd_xids_to_sids
winbindd_getpwsid
winbindd_getpwnam
winbindd_getpwuid
winbindd_getsidaliases
winbindd_getuserdomgroups
winbindd_getgroups
winbindd_show_sequence
winbindd_getgrgid
winbindd_getgrnam
winbindd_getusersids
winbindd_lookuprids
winbindd_setpwent
winbindd_getpwent
winbindd_endpwent
winbindd_dsgetdcname
winbindd_getdcname
winbindd_setgrent
winbindd_getgrent
winbindd_endgrent
winbindd_list_users
winbindd_list_groups
winbindd_check_machine_acct
winbindd_ping_dc
winbindd_pam_auth
winbindd_pam_logoff
winbindd_pam_chauthtok
winbindd_pam_chng_pswd_auth_crap
winbindd_wins_byip
winbindd_wins_byname
winbindd_allocate_uid
winbindd_allocate_gid
winbindd_change_machine_acct
winbindd_pam_auth_crap"
backend_funcs = " query_user_list
enum_dom_groups
enum_local_groups
name_to_sid
sid_to_name
rids_to_names
lookup_usergroups
lookup_useraliases
lookup_groupmem
sequence_number
lockout_policy
password_policy
trusted_domains"
header = ' #!/usr/bin/stap
#
# Systemtap script to instrument winbindd
#
' " # Generated by examples/systemtap/ $( basename $0 ) on $( date) , do not edit
#"'
# Usage:
#
# Instrument all winbindd processes:
# # stap winbindd.stp
#
# Instrument a specific winbindd process:
# # stap -x PID winbindd.stp
#
global dc_running, dc_svctime
global backend_running, backend_svctime
global send_running, recv_running
global start_time, idle_time
global async_svctime, async_runtime
probe begin {
printf( "Collecting data, press ctrl-C to stop... " )
} '
domchild_req_template = '
#
# winbind domain child function XXX
#
probe process( "winbindd" ) .function( "XXX" ) {
dc_running[ tid( ) , "XXX" ] = gettimeofday_us( )
}
probe process( "winbindd" ) .function( "XXX" ) .return {
if ( !( [ tid( ) , "XXX" ] in dc_running) )
next
end = gettimeofday_us( )
begin = dc_running[ tid( ) , "XXX" ]
delete dc_running[ tid( ) , "XXX" ]
duration = end - begin
dc_svctime[ "XXX" ] <<< duration
} '
backend_req_template = '
#
# winbind domain child backend function XXX
#
probe process( "winbindd" ) .function( "XXX@../source3/winbindd/winbindd_ads.c" ) {
backend_running[ tid( ) , "XXX" ] = gettimeofday_us( )
}
probe process( "winbindd" ) .function( "XXX@../source3/winbindd/winbindd_ads.c" ) .return {
if ( !( [ tid( ) , "XXX" ] in backend_running) )
next
end = gettimeofday_us( )
begin = backend_running[ tid( ) , "XXX" ]
delete backend_running[ tid( ) , "XXX" ]
duration = end - begin
backend_svctime[ "XXX" ] <<< duration
} '
async_req_template = '
#
# winbind async function XXX
#
probe process( "winbindd" ) .function( "XXX_send" ) {
send_running[ "XXX_send" ] = gettimeofday_us( )
}
probe process( "winbindd" ) .function( "XXX_send" ) .return {
if ( !( [ "XXX_send" ] in send_running) )
next
end = gettimeofday_us( )
start = send_running[ "XXX_send" ]
delete send_running[ "XXX_send" ]
start_time[ "XXX_send" , $return ] = start
idle_time[ "XXX_send" , $return ] = end
}
probe process( "winbindd" ) .function( "XXX_recv" ) {
if ( !( [ "XXX_send" , $req ] in start_time) )
next
recv_running[ "XXX_recv" ] = gettimeofday_us( )
}
probe process( "winbindd" ) .function( "XXX_recv" ) .return {
if ( !( [ "XXX_recv" ] in recv_running) )
next
recv_end = gettimeofday_us( )
recv_start = recv_running[ "XXX_recv" ]
delete recv_running[ "XXX_recv" ]
recv_runtime = recv_end - recv_start
req = @entry( $req )
send_begin = start_time[ "XXX_send" , req]
delete start_time[ "XXX_send" , req]
svctime = recv_end - send_begin
idle = idle_time[ "XXX_send" , req]
delete idle_time[ "XXX_send" , req]
runtime = ( idle - send_begin) + recv_runtime
async_svctime[ "XXX_send" ] <<< svctime
async_runtime[ "XXX_send" ] <<< runtime
} '
footer = '
probe end {
printf( "\n\n" )
printf( "Winbind request service time\n" )
printf( "============================\n" )
foreach ( [ name] in async_svctime) {
printf( "%-40s count: %5d, sum: %6d ms (min: %6d us, avg: %6d us, max: %6d us)\n" ,
name,
@count( async_svctime[ name] ) ,
@sum( async_svctime[ name] ) / 1000,
@min( async_svctime[ name] ) ,
@avg( async_svctime[ name] ) ,
@max( async_svctime[ name] ) )
}
printf( "\n" )
printf( "Winbind request runtime\n" )
printf( "=======================\n" )
foreach ( [ name] in async_runtime) {
printf( "%-40s count: %5d, sum: %6d ms (min: %6d us, avg: %6d us, max: %6d us)\n" ,
name,
@count( async_runtime[ name] ) ,
@sum( async_runtime[ name] ) / 1000,
@min( async_runtime[ name] ) ,
@avg( async_runtime[ name] ) ,
@max( async_runtime[ name] ) )
}
printf( "\n" )
printf( "Winbind domain-child request service time\n" )
printf( "=========================================\n" )
foreach ( [ name] in dc_svctime) {
printf( "%-40s count: %5d, sum: %6d ms (min: %6d us, avg: %6d us, max: %6d us)\n" ,
name,
@count( dc_svctime[ name] ) ,
@sum( dc_svctime[ name] ) / 1000,
@min( dc_svctime[ name] ) ,
@avg( dc_svctime[ name] ) ,
@max( dc_svctime[ name] ) )
}
printf( "\n" )
printf( "Winbind domain-child AD-backend service time\n" )
printf( "============================================\n" )
foreach ( [ name] in backend_svctime) {
printf( "%-40s count: %5d, sum: %6d ms (min: %6d us, avg: %6d us, max: %6d us)\n" ,
name,
@count( backend_svctime[ name] ) ,
@sum( backend_svctime[ name] ) / 1000,
@min( backend_svctime[ name] ) ,
@avg( backend_svctime[ name] ) ,
@max( backend_svctime[ name] ) )
}
printf( "\n" )
printf( "Winbind request service time distributions (us)\n" )
printf( "===============================================\n" )
foreach ( [ name] in async_svctime) {
printf( "%s:\n" , name) ;
println( @hist_log( async_svctime[ name] ) )
}
printf( "\n" )
printf( "Winbind request runtime distributions (us)\n" )
printf( "==========================================\n" )
foreach ( [ name] in async_runtime) {
printf( "%s:\n" , name) ;
println( @hist_log( async_runtime[ name] ) )
}
printf( "Winbind domain-child request service time distributions (us)\n" )
printf( "============================================================\n" )
foreach ( [ name] in dc_svctime) {
printf( "%s:\n" , name) ;
println( @hist_log( dc_svctime[ name] ) )
}
printf( "Winbind domain-child AD-backend service time distributions (us)\n" )
printf( "===============================================================\n" )
foreach ( [ name] in backend_svctime) {
printf( "%s:\n" , name) ;
println( @hist_log( backend_svctime[ name] ) )
}
} '
2022-02-19 18:06:32 +03:00
cat <<EOF >$outfile
examples: add winbindd.stp and a shell script to generate it
Usage:
Instrument all winbindd processes:
# stap winbindd.stp
Instrument a specific winbindd process:
# stap -x PID winbindd.stp
Example output:
# stap winbindd.stp
Collecting data, press ctrl-C to stop... ^C
Winbind request service time
============================
winbindd_getpwnam_send count: 99, sum: 6229 ms (min: 2669 us, avg: 62921 us, max: 157907 us)
Winbind request runtime
=======================
winbindd_getpwnam_send count: 99, sum: 3 ms (min: 21 us, avg: 36 us, max: 77 us)
Winbind domain-child request service time
=========================================
_wbint_LookupName count: 99, sum: 1403 ms (min: 619 us, avg: 14181 us, max: 136613 us)
_wbint_GetNssInfo count: 99, sum: 0 ms (min: 2 us, avg: 3 us, max: 6 us)
_wbint_LookupSid count: 102, sum: 49 ms (min: 13 us, avg: 481 us, max: 6315 us)
_wbint_Sids2UnixIDs count: 101, sum: 2 ms (min: 18 us, avg: 29 us, max: 49 us)
_wbint_LookupSids count: 101, sum: 84 ms (min: 411 us, avg: 838 us, max: 3524 us)
Winbind domain-child AD-backend service time
============================================
sid_to_name count: 56, sum: 45 ms (min: 431 us, avg: 816 us, max: 6275 us)
sequence_number count: 12, sum: 1209 ms (min: 46618 us, avg: 100803 us, max: 131439 us)
name_to_sid count: 99, sum: 176 ms (min: 547 us, avg: 1781 us, max: 9866 us)
...
Regenerate winbindd.stp:
$ examples/systemtap/generate-winbindd.stp.sh
Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
Autobuild-User(master): Ralph Böhme <slow@samba.org>
Autobuild-Date(master): Wed Jul 19 16:20:56 CEST 2017 on sn-devel-144
2017-06-30 20:37:03 +03:00
$header
EOF
2022-02-19 18:06:32 +03:00
printf " $child_funcs \n " | while read func; do
printf " $domchild_req_template \n " | sed -e s/XXX/$func /g >>$outfile
examples: add winbindd.stp and a shell script to generate it
Usage:
Instrument all winbindd processes:
# stap winbindd.stp
Instrument a specific winbindd process:
# stap -x PID winbindd.stp
Example output:
# stap winbindd.stp
Collecting data, press ctrl-C to stop... ^C
Winbind request service time
============================
winbindd_getpwnam_send count: 99, sum: 6229 ms (min: 2669 us, avg: 62921 us, max: 157907 us)
Winbind request runtime
=======================
winbindd_getpwnam_send count: 99, sum: 3 ms (min: 21 us, avg: 36 us, max: 77 us)
Winbind domain-child request service time
=========================================
_wbint_LookupName count: 99, sum: 1403 ms (min: 619 us, avg: 14181 us, max: 136613 us)
_wbint_GetNssInfo count: 99, sum: 0 ms (min: 2 us, avg: 3 us, max: 6 us)
_wbint_LookupSid count: 102, sum: 49 ms (min: 13 us, avg: 481 us, max: 6315 us)
_wbint_Sids2UnixIDs count: 101, sum: 2 ms (min: 18 us, avg: 29 us, max: 49 us)
_wbint_LookupSids count: 101, sum: 84 ms (min: 411 us, avg: 838 us, max: 3524 us)
Winbind domain-child AD-backend service time
============================================
sid_to_name count: 56, sum: 45 ms (min: 431 us, avg: 816 us, max: 6275 us)
sequence_number count: 12, sum: 1209 ms (min: 46618 us, avg: 100803 us, max: 131439 us)
name_to_sid count: 99, sum: 176 ms (min: 547 us, avg: 1781 us, max: 9866 us)
...
Regenerate winbindd.stp:
$ examples/systemtap/generate-winbindd.stp.sh
Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
Autobuild-User(master): Ralph Böhme <slow@samba.org>
Autobuild-Date(master): Wed Jul 19 16:20:56 CEST 2017 on sn-devel-144
2017-06-30 20:37:03 +03:00
done
2022-02-19 18:06:32 +03:00
printf " $backend_funcs \n " | while read func; do
printf " $backend_req_template \n " | sed -e " s|XXX| $func |g " >>$outfile
examples: add winbindd.stp and a shell script to generate it
Usage:
Instrument all winbindd processes:
# stap winbindd.stp
Instrument a specific winbindd process:
# stap -x PID winbindd.stp
Example output:
# stap winbindd.stp
Collecting data, press ctrl-C to stop... ^C
Winbind request service time
============================
winbindd_getpwnam_send count: 99, sum: 6229 ms (min: 2669 us, avg: 62921 us, max: 157907 us)
Winbind request runtime
=======================
winbindd_getpwnam_send count: 99, sum: 3 ms (min: 21 us, avg: 36 us, max: 77 us)
Winbind domain-child request service time
=========================================
_wbint_LookupName count: 99, sum: 1403 ms (min: 619 us, avg: 14181 us, max: 136613 us)
_wbint_GetNssInfo count: 99, sum: 0 ms (min: 2 us, avg: 3 us, max: 6 us)
_wbint_LookupSid count: 102, sum: 49 ms (min: 13 us, avg: 481 us, max: 6315 us)
_wbint_Sids2UnixIDs count: 101, sum: 2 ms (min: 18 us, avg: 29 us, max: 49 us)
_wbint_LookupSids count: 101, sum: 84 ms (min: 411 us, avg: 838 us, max: 3524 us)
Winbind domain-child AD-backend service time
============================================
sid_to_name count: 56, sum: 45 ms (min: 431 us, avg: 816 us, max: 6275 us)
sequence_number count: 12, sum: 1209 ms (min: 46618 us, avg: 100803 us, max: 131439 us)
name_to_sid count: 99, sum: 176 ms (min: 547 us, avg: 1781 us, max: 9866 us)
...
Regenerate winbindd.stp:
$ examples/systemtap/generate-winbindd.stp.sh
Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
Autobuild-User(master): Ralph Böhme <slow@samba.org>
Autobuild-Date(master): Wed Jul 19 16:20:56 CEST 2017 on sn-devel-144
2017-06-30 20:37:03 +03:00
done
2022-02-19 18:06:32 +03:00
printf " $async_funcs \n " | while read func; do
printf " $async_req_template \n " | sed -e s/XXX/$func /g >>$outfile
examples: add winbindd.stp and a shell script to generate it
Usage:
Instrument all winbindd processes:
# stap winbindd.stp
Instrument a specific winbindd process:
# stap -x PID winbindd.stp
Example output:
# stap winbindd.stp
Collecting data, press ctrl-C to stop... ^C
Winbind request service time
============================
winbindd_getpwnam_send count: 99, sum: 6229 ms (min: 2669 us, avg: 62921 us, max: 157907 us)
Winbind request runtime
=======================
winbindd_getpwnam_send count: 99, sum: 3 ms (min: 21 us, avg: 36 us, max: 77 us)
Winbind domain-child request service time
=========================================
_wbint_LookupName count: 99, sum: 1403 ms (min: 619 us, avg: 14181 us, max: 136613 us)
_wbint_GetNssInfo count: 99, sum: 0 ms (min: 2 us, avg: 3 us, max: 6 us)
_wbint_LookupSid count: 102, sum: 49 ms (min: 13 us, avg: 481 us, max: 6315 us)
_wbint_Sids2UnixIDs count: 101, sum: 2 ms (min: 18 us, avg: 29 us, max: 49 us)
_wbint_LookupSids count: 101, sum: 84 ms (min: 411 us, avg: 838 us, max: 3524 us)
Winbind domain-child AD-backend service time
============================================
sid_to_name count: 56, sum: 45 ms (min: 431 us, avg: 816 us, max: 6275 us)
sequence_number count: 12, sum: 1209 ms (min: 46618 us, avg: 100803 us, max: 131439 us)
name_to_sid count: 99, sum: 176 ms (min: 547 us, avg: 1781 us, max: 9866 us)
...
Regenerate winbindd.stp:
$ examples/systemtap/generate-winbindd.stp.sh
Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
Autobuild-User(master): Ralph Böhme <slow@samba.org>
Autobuild-Date(master): Wed Jul 19 16:20:56 CEST 2017 on sn-devel-144
2017-06-30 20:37:03 +03:00
done
cat <<EOF >>$outfile
$footer
EOF