utils/status_profile.c

説明を見る。
00001 /*
00002  * Unix SMB/CIFS implementation.
00003  * status reporting
00004  * Copyright (C) Andrew Tridgell 1994-1998
00005  * Copyright (C) James Peach 2005-2006
00006  *
00007  * This program is free software; you can redistribute it and/or modify
00008  * it under the terms of the GNU General Public License as published by
00009  * the Free Software Foundation; either version 2 of the License, or
00010  * (at your option) any later version.
00011  *
00012  * This program is distributed in the hope that it will be useful,
00013  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00014  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015  * GNU General Public License for more details.
00016  *
00017  * You should have received a copy of the GNU General Public License
00018  * along with this program; if not, write to the Free Software
00019  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00020  */
00021 
00022 #include "includes.h"
00023 
00024 BOOL status_profile_dump(BOOL be_verbose);
00025 BOOL status_profile_rates(BOOL be_verbose);
00026 
00027 #ifdef WITH_PROFILE
00028 static void profile_separator(const char * title)
00029 {
00030     char line[79 + 1];
00031     char * end;
00032 
00033     snprintf(line, sizeof(line), "**** %s ", title);
00034 
00035     for (end = line + strlen(line); end < &line[sizeof(line) -1]; ++end) {
00036             *end = '*';
00037     }
00038 
00039     line[sizeof(line) - 1] = '\0';
00040     d_printf("%s\n", line);
00041 }
00042 #endif
00043 
00044 /*******************************************************************
00045  dump the elements of the profile structure
00046   ******************************************************************/
00047 BOOL status_profile_dump(BOOL verbose)
00048 {
00049 #ifdef WITH_PROFILE
00050         if (!profile_setup(True)) {
00051                 fprintf(stderr,"Failed to initialise profile memory\n");
00052                 return False;
00053         }
00054 
00055         d_printf("smb_count:                      %u\n", profile_p->smb_count);
00056         d_printf("uid_changes:                    %u\n", profile_p->uid_changes);
00057 
00058         profile_separator("System Calls");
00059         d_printf("opendir_count:                  %u\n", profile_p->syscall_opendir_count);
00060         d_printf("opendir_time:                   %u\n", profile_p->syscall_opendir_time);
00061         d_printf("readdir_count:                  %u\n", profile_p->syscall_readdir_count);
00062         d_printf("readdir_time:                   %u\n", profile_p->syscall_readdir_time);
00063         d_printf("mkdir_count:                    %u\n", profile_p->syscall_mkdir_count);
00064         d_printf("mkdir_time:                     %u\n", profile_p->syscall_mkdir_time);
00065         d_printf("rmdir_count:                    %u\n", profile_p->syscall_rmdir_count);
00066         d_printf("rmdir_time:                     %u\n", profile_p->syscall_rmdir_time);
00067         d_printf("closedir_count:                 %u\n", profile_p->syscall_closedir_count);
00068         d_printf("closedir_time:                  %u\n", profile_p->syscall_closedir_time);
00069         d_printf("open_count:                     %u\n", profile_p->syscall_open_count);
00070         d_printf("open_time:                      %u\n", profile_p->syscall_open_time);
00071         d_printf("close_count:                    %u\n", profile_p->syscall_close_count);
00072         d_printf("close_time:                     %u\n", profile_p->syscall_close_time);
00073         d_printf("read_count:                     %u\n", profile_p->syscall_read_count);
00074         d_printf("read_time:                      %u\n", profile_p->syscall_read_time);
00075         d_printf("read_bytes:                     %u\n", profile_p->syscall_read_bytes);
00076         d_printf("write_count:                    %u\n", profile_p->syscall_write_count);
00077         d_printf("write_time:                     %u\n", profile_p->syscall_write_time);
00078         d_printf("write_bytes:                    %u\n", profile_p->syscall_write_bytes);
00079         d_printf("pread_count:                    %u\n", profile_p->syscall_pread_count);
00080         d_printf("pread_time:                     %u\n", profile_p->syscall_pread_time);
00081         d_printf("pread_bytes:                    %u\n", profile_p->syscall_pread_bytes);
00082         d_printf("pwrite_count:                   %u\n", profile_p->syscall_pwrite_count);
00083         d_printf("pwrite_time:                    %u\n", profile_p->syscall_pwrite_time);
00084         d_printf("pwrite_bytes:                   %u\n", profile_p->syscall_pwrite_bytes);
00085 #ifdef WITH_SENDFILE
00086         d_printf("sendfile_count:                 %u\n", profile_p->syscall_sendfile_count);
00087         d_printf("sendfile_time:                  %u\n", profile_p->syscall_sendfile_time);
00088         d_printf("sendfile_bytes:                 %u\n", profile_p->syscall_sendfile_bytes);
00089 #endif
00090         d_printf("lseek_count:                    %u\n", profile_p->syscall_lseek_count);
00091         d_printf("lseek_time:                     %u\n", profile_p->syscall_lseek_time);
00092         d_printf("rename_count:                   %u\n", profile_p->syscall_rename_count);
00093         d_printf("rename_time:                    %u\n", profile_p->syscall_rename_time);
00094         d_printf("fsync_count:                    %u\n", profile_p->syscall_fsync_count);
00095         d_printf("fsync_time:                     %u\n", profile_p->syscall_fsync_time);
00096         d_printf("stat_count:                     %u\n", profile_p->syscall_stat_count);
00097         d_printf("stat_time:                      %u\n", profile_p->syscall_stat_time);
00098         d_printf("fstat_count:                    %u\n", profile_p->syscall_fstat_count);
00099         d_printf("fstat_time:                     %u\n", profile_p->syscall_fstat_time);
00100         d_printf("lstat_count:                    %u\n", profile_p->syscall_lstat_count);
00101         d_printf("lstat_time:                     %u\n", profile_p->syscall_lstat_time);
00102         d_printf("unlink_count:                   %u\n", profile_p->syscall_unlink_count);
00103         d_printf("unlink_time:                    %u\n", profile_p->syscall_unlink_time);
00104         d_printf("chmod_count:                    %u\n", profile_p->syscall_chmod_count);
00105         d_printf("chmod_time:                     %u\n", profile_p->syscall_chmod_time);
00106         d_printf("fchmod_count:                   %u\n", profile_p->syscall_fchmod_count);
00107         d_printf("fchmod_time:                    %u\n", profile_p->syscall_fchmod_time);
00108         d_printf("chown_count:                    %u\n", profile_p->syscall_chown_count);
00109         d_printf("chown_time:                     %u\n", profile_p->syscall_chown_time);
00110         d_printf("fchown_count:                   %u\n", profile_p->syscall_fchown_count);
00111         d_printf("fchown_time:                    %u\n", profile_p->syscall_fchown_time);
00112         d_printf("chdir_count:                    %u\n", profile_p->syscall_chdir_count);
00113         d_printf("chdir_time:                     %u\n", profile_p->syscall_chdir_time);
00114         d_printf("getwd_count:                    %u\n", profile_p->syscall_getwd_count);
00115         d_printf("getwd_time:                     %u\n", profile_p->syscall_getwd_time);
00116         d_printf("ntimes_count:                   %u\n", profile_p->syscall_ntimes_count);
00117         d_printf("ntimes_time:                    %u\n", profile_p->syscall_ntimes_time);
00118         d_printf("ftruncate_count:                %u\n", profile_p->syscall_ftruncate_count);
00119         d_printf("ftruncate_time:                 %u\n", profile_p->syscall_ftruncate_time);
00120         d_printf("fcntl_lock_count:               %u\n", profile_p->syscall_fcntl_lock_count);
00121         d_printf("fcntl_lock_time:                %u\n", profile_p->syscall_fcntl_lock_time);
00122         d_printf("readlink_count:                 %u\n", profile_p->syscall_readlink_count);
00123         d_printf("readlink_time:                  %u\n", profile_p->syscall_readlink_time);
00124         d_printf("symlink_count:                  %u\n", profile_p->syscall_symlink_count);
00125         d_printf("symlink_time:                   %u\n", profile_p->syscall_symlink_time);
00126 
00127         profile_separator("Stat Cache");
00128         d_printf("lookups:                        %u\n", profile_p->statcache_lookups);
00129         d_printf("misses:                         %u\n", profile_p->statcache_misses);
00130         d_printf("hits:                           %u\n", profile_p->statcache_hits);
00131 
00132         profile_separator("Write Cache");
00133         d_printf("read_hits:                      %u\n", profile_p->writecache_read_hits);
00134         d_printf("abutted_writes:                 %u\n", profile_p->writecache_abutted_writes);
00135         d_printf("total_writes:                   %u\n", profile_p->writecache_total_writes);
00136         d_printf("non_oplock_writes:              %u\n", profile_p->writecache_non_oplock_writes);
00137         d_printf("direct_writes:                  %u\n", profile_p->writecache_direct_writes);
00138         d_printf("init_writes:                    %u\n", profile_p->writecache_init_writes);
00139         d_printf("flushed_writes[SEEK]:           %u\n", profile_p->writecache_flushed_writes[SEEK_FLUSH]);
00140         d_printf("flushed_writes[READ]:           %u\n", profile_p->writecache_flushed_writes[READ_FLUSH]);
00141         d_printf("flushed_writes[WRITE]:          %u\n", profile_p->writecache_flushed_writes[WRITE_FLUSH]);
00142         d_printf("flushed_writes[READRAW]:        %u\n", profile_p->writecache_flushed_writes[READRAW_FLUSH]);
00143         d_printf("flushed_writes[OPLOCK_RELEASE]: %u\n", profile_p->writecache_flushed_writes[OPLOCK_RELEASE_FLUSH]);
00144         d_printf("flushed_writes[CLOSE]:          %u\n", profile_p->writecache_flushed_writes[CLOSE_FLUSH]);
00145         d_printf("flushed_writes[SYNC]:           %u\n", profile_p->writecache_flushed_writes[SYNC_FLUSH]);
00146         d_printf("flushed_writes[SIZECHANGE]:     %u\n", profile_p->writecache_flushed_writes[SIZECHANGE_FLUSH]);
00147         d_printf("num_perfect_writes:             %u\n", profile_p->writecache_num_perfect_writes);
00148         d_printf("num_write_caches:               %u\n", profile_p->writecache_num_write_caches);
00149         d_printf("allocated_write_caches:         %u\n", profile_p->writecache_allocated_write_caches);
00150 
00151         profile_separator("SMB Calls");
00152         d_printf("mkdir_count:                    %u\n", profile_p->SMBmkdir_count);
00153         d_printf("mkdir_time:                     %u\n", profile_p->SMBmkdir_time);
00154         d_printf("rmdir_count:                    %u\n", profile_p->SMBrmdir_count);
00155         d_printf("rmdir_time:                     %u\n", profile_p->SMBrmdir_time);
00156         d_printf("open_count:                     %u\n", profile_p->SMBopen_count);
00157         d_printf("open_time:                      %u\n", profile_p->SMBopen_time);
00158         d_printf("create_count:                   %u\n", profile_p->SMBcreate_count);
00159         d_printf("create_time:                    %u\n", profile_p->SMBcreate_time);
00160         d_printf("close_count:                    %u\n", profile_p->SMBclose_count);
00161         d_printf("close_time:                     %u\n", profile_p->SMBclose_time);
00162         d_printf("flush_count:                    %u\n", profile_p->SMBflush_count);
00163         d_printf("flush_time:                     %u\n", profile_p->SMBflush_time);
00164         d_printf("unlink_count:                   %u\n", profile_p->SMBunlink_count);
00165         d_printf("unlink_time:                    %u\n", profile_p->SMBunlink_time);
00166         d_printf("mv_count:                       %u\n", profile_p->SMBmv_count);
00167         d_printf("mv_time:                        %u\n", profile_p->SMBmv_time);
00168         d_printf("getatr_count:                   %u\n", profile_p->SMBgetatr_count);
00169         d_printf("getatr_time:                    %u\n", profile_p->SMBgetatr_time);
00170         d_printf("setatr_count:                   %u\n", profile_p->SMBsetatr_count);
00171         d_printf("setatr_time:                    %u\n", profile_p->SMBsetatr_time);
00172         d_printf("read_count:                     %u\n", profile_p->SMBread_count);
00173         d_printf("read_time:                      %u\n", profile_p->SMBread_time);
00174         d_printf("write_count:                    %u\n", profile_p->SMBwrite_count);
00175         d_printf("write_time:                     %u\n", profile_p->SMBwrite_time);
00176         d_printf("lock_count:                     %u\n", profile_p->SMBlock_count);
00177         d_printf("lock_time:                      %u\n", profile_p->SMBlock_time);
00178         d_printf("unlock_count:                   %u\n", profile_p->SMBunlock_count);
00179         d_printf("unlock_time:                    %u\n", profile_p->SMBunlock_time);
00180         d_printf("ctemp_count:                    %u\n", profile_p->SMBctemp_count);
00181         d_printf("ctemp_time:                     %u\n", profile_p->SMBctemp_time);
00182         d_printf("mknew_count:                    %u\n", profile_p->SMBmknew_count);
00183         d_printf("mknew_time:                     %u\n", profile_p->SMBmknew_time);
00184         d_printf("checkpath_count:                %u\n", profile_p->SMBcheckpath_count);
00185         d_printf("checkpath_time:                 %u\n", profile_p->SMBcheckpath_time);
00186         d_printf("exit_count:                     %u\n", profile_p->SMBexit_count);
00187         d_printf("exit_time:                      %u\n", profile_p->SMBexit_time);
00188         d_printf("lseek_count:                    %u\n", profile_p->SMBlseek_count);
00189         d_printf("lseek_time:                     %u\n", profile_p->SMBlseek_time);
00190         d_printf("lockread_count:                 %u\n", profile_p->SMBlockread_count);
00191         d_printf("lockread_time:                  %u\n", profile_p->SMBlockread_time);
00192         d_printf("writeunlock_count:              %u\n", profile_p->SMBwriteunlock_count);
00193         d_printf("writeunlock_time:               %u\n", profile_p->SMBwriteunlock_time);
00194         d_printf("readbraw_count:                 %u\n", profile_p->SMBreadbraw_count);
00195         d_printf("readbraw_time:                  %u\n", profile_p->SMBreadbraw_time);
00196         d_printf("readBmpx_count:                 %u\n", profile_p->SMBreadBmpx_count);
00197         d_printf("readBmpx_time:                  %u\n", profile_p->SMBreadBmpx_time);
00198         d_printf("readBs_count:                   %u\n", profile_p->SMBreadBs_count);
00199         d_printf("readBs_time:                    %u\n", profile_p->SMBreadBs_time);
00200         d_printf("writebraw_count:                %u\n", profile_p->SMBwritebraw_count);
00201         d_printf("writebraw_time:                 %u\n", profile_p->SMBwritebraw_time);
00202         d_printf("writeBmpx_count:                %u\n", profile_p->SMBwriteBmpx_count);
00203         d_printf("writeBmpx_time:                 %u\n", profile_p->SMBwriteBmpx_time);
00204         d_printf("writeBs_count:                  %u\n", profile_p->SMBwriteBs_count);
00205         d_printf("writeBs_time:                   %u\n", profile_p->SMBwriteBs_time);
00206         d_printf("writec_count:                   %u\n", profile_p->SMBwritec_count);
00207         d_printf("writec_time:                    %u\n", profile_p->SMBwritec_time);
00208         d_printf("setattrE_count:                 %u\n", profile_p->SMBsetattrE_count);
00209         d_printf("setattrE_time:                  %u\n", profile_p->SMBsetattrE_time);
00210         d_printf("getattrE_count:                 %u\n", profile_p->SMBgetattrE_count);
00211         d_printf("getattrE_time:                  %u\n", profile_p->SMBgetattrE_time);
00212         d_printf("lockingX_count:                 %u\n", profile_p->SMBlockingX_count);
00213         d_printf("lockingX_time:                  %u\n", profile_p->SMBlockingX_time);
00214         d_printf("trans_count:                    %u\n", profile_p->SMBtrans_count);
00215         d_printf("trans_time:                     %u\n", profile_p->SMBtrans_time);
00216         d_printf("transs_count:                   %u\n", profile_p->SMBtranss_count);
00217         d_printf("transs_time:                    %u\n", profile_p->SMBtranss_time);
00218         d_printf("ioctl_count:                    %u\n", profile_p->SMBioctl_count);
00219         d_printf("ioctl_time:                     %u\n", profile_p->SMBioctl_time);
00220         d_printf("ioctls_count:                   %u\n", profile_p->SMBioctls_count);
00221         d_printf("ioctls_time:                    %u\n", profile_p->SMBioctls_time);
00222         d_printf("copy_count:                     %u\n", profile_p->SMBcopy_count);
00223         d_printf("copy_time:                      %u\n", profile_p->SMBcopy_time);
00224         d_printf("move_count:                     %u\n", profile_p->SMBmove_count);
00225         d_printf("move_time:                      %u\n", profile_p->SMBmove_time);
00226         d_printf("echo_count:                     %u\n", profile_p->SMBecho_count);
00227         d_printf("echo_time:                      %u\n", profile_p->SMBecho_time);
00228         d_printf("writeclose_count:               %u\n", profile_p->SMBwriteclose_count);
00229         d_printf("writeclose_time:                %u\n", profile_p->SMBwriteclose_time);
00230         d_printf("openX_count:                    %u\n", profile_p->SMBopenX_count);
00231         d_printf("openX_time:                     %u\n", profile_p->SMBopenX_time);
00232         d_printf("readX_count:                    %u\n", profile_p->SMBreadX_count);
00233         d_printf("readX_time:                     %u\n", profile_p->SMBreadX_time);
00234         d_printf("writeX_count:                   %u\n", profile_p->SMBwriteX_count);
00235         d_printf("writeX_time:                    %u\n", profile_p->SMBwriteX_time);
00236         d_printf("trans2_count:                   %u\n", profile_p->SMBtrans2_count);
00237         d_printf("trans2_time:                    %u\n", profile_p->SMBtrans2_time);
00238         d_printf("transs2_count:                  %u\n", profile_p->SMBtranss2_count);
00239         d_printf("transs2_time:                   %u\n", profile_p->SMBtranss2_time);
00240         d_printf("findclose_count:                %u\n", profile_p->SMBfindclose_count);
00241         d_printf("findclose_time:                 %u\n", profile_p->SMBfindclose_time);
00242         d_printf("findnclose_count:               %u\n", profile_p->SMBfindnclose_count);
00243         d_printf("findnclose_time:                %u\n", profile_p->SMBfindnclose_time);
00244         d_printf("tcon_count:                     %u\n", profile_p->SMBtcon_count);
00245         d_printf("tcon_time:                      %u\n", profile_p->SMBtcon_time);
00246         d_printf("tdis_count:                     %u\n", profile_p->SMBtdis_count);
00247         d_printf("tdis_time:                      %u\n", profile_p->SMBtdis_time);
00248         d_printf("negprot_count:                  %u\n", profile_p->SMBnegprot_count);
00249         d_printf("negprot_time:                   %u\n", profile_p->SMBnegprot_time);
00250         d_printf("sesssetupX_count:               %u\n", profile_p->SMBsesssetupX_count);
00251         d_printf("sesssetupX_time:                %u\n", profile_p->SMBsesssetupX_time);
00252         d_printf("ulogoffX_count:                 %u\n", profile_p->SMBulogoffX_count);
00253         d_printf("ulogoffX_time:                  %u\n", profile_p->SMBulogoffX_time);
00254         d_printf("tconX_count:                    %u\n", profile_p->SMBtconX_count);
00255         d_printf("tconX_time:                     %u\n", profile_p->SMBtconX_time);
00256         d_printf("dskattr_count:                  %u\n", profile_p->SMBdskattr_count);
00257         d_printf("dskattr_time:                   %u\n", profile_p->SMBdskattr_time);
00258         d_printf("search_count:                   %u\n", profile_p->SMBsearch_count);
00259         d_printf("search_time:                    %u\n", profile_p->SMBsearch_time);
00260         d_printf("ffirst_count:                   %u\n", profile_p->SMBffirst_count);
00261         d_printf("ffirst_time:                    %u\n", profile_p->SMBffirst_time);
00262         d_printf("funique_count:                  %u\n", profile_p->SMBfunique_count);
00263         d_printf("funique_time:                   %u\n", profile_p->SMBfunique_time);
00264         d_printf("fclose_count:                   %u\n", profile_p->SMBfclose_count);
00265         d_printf("fclose_time:                    %u\n", profile_p->SMBfclose_time);
00266         d_printf("nttrans_count:                  %u\n", profile_p->SMBnttrans_count);
00267         d_printf("nttrans_time:                   %u\n", profile_p->SMBnttrans_time);
00268         d_printf("nttranss_count:                 %u\n", profile_p->SMBnttranss_count);
00269         d_printf("nttranss_time:                  %u\n", profile_p->SMBnttranss_time);
00270         d_printf("ntcreateX_count:                %u\n", profile_p->SMBntcreateX_count);
00271         d_printf("ntcreateX_time:                 %u\n", profile_p->SMBntcreateX_time);
00272         d_printf("ntcancel_count:                 %u\n", profile_p->SMBntcancel_count);
00273         d_printf("ntcancel_time:                  %u\n", profile_p->SMBntcancel_time);
00274         d_printf("splopen_count:                  %u\n", profile_p->SMBsplopen_count);
00275         d_printf("splopen_time:                   %u\n", profile_p->SMBsplopen_time);
00276         d_printf("splwr_count:                    %u\n", profile_p->SMBsplwr_count);
00277         d_printf("splwr_time:                     %u\n", profile_p->SMBsplwr_time);
00278         d_printf("splclose_count:                 %u\n", profile_p->SMBsplclose_count);
00279         d_printf("splclose_time:                  %u\n", profile_p->SMBsplclose_time);
00280         d_printf("splretq_count:                  %u\n", profile_p->SMBsplretq_count);
00281         d_printf("splretq_time:                   %u\n", profile_p->SMBsplretq_time);
00282         d_printf("sends_count:                    %u\n", profile_p->SMBsends_count);
00283         d_printf("sends_time:                     %u\n", profile_p->SMBsends_time);
00284         d_printf("sendb_count:                    %u\n", profile_p->SMBsendb_count);
00285         d_printf("sendb_time:                     %u\n", profile_p->SMBsendb_time);
00286         d_printf("fwdname_count:                  %u\n", profile_p->SMBfwdname_count);
00287         d_printf("fwdname_time:                   %u\n", profile_p->SMBfwdname_time);
00288         d_printf("cancelf_count:                  %u\n", profile_p->SMBcancelf_count);
00289         d_printf("cancelf_time:                   %u\n", profile_p->SMBcancelf_time);
00290         d_printf("getmac_count:                   %u\n", profile_p->SMBgetmac_count);
00291         d_printf("getmac_time:                    %u\n", profile_p->SMBgetmac_time);
00292         d_printf("sendstrt_count:                 %u\n", profile_p->SMBsendstrt_count);
00293         d_printf("sendstrt_time:                  %u\n", profile_p->SMBsendstrt_time);
00294         d_printf("sendend_count:                  %u\n", profile_p->SMBsendend_count);
00295         d_printf("sendend_time:                   %u\n", profile_p->SMBsendend_time);
00296         d_printf("sendtxt_count:                  %u\n", profile_p->SMBsendtxt_count);
00297         d_printf("sendtxt_time:                   %u\n", profile_p->SMBsendtxt_time);
00298         d_printf("invalid_count:                  %u\n", profile_p->SMBinvalid_count);
00299         d_printf("invalid_time:                   %u\n", profile_p->SMBinvalid_time);
00300 
00301         profile_separator("Pathworks Calls");
00302         d_printf("setdir_count:                   %u\n", profile_p->pathworks_setdir_count);
00303         d_printf("setdir_time:                    %u\n", profile_p->pathworks_setdir_time);
00304 
00305         profile_separator("Trans2 Calls");
00306         d_printf("open_count:                     %u\n", profile_p->Trans2_open_count);
00307         d_printf("open_time:                      %u\n", profile_p->Trans2_open_time);
00308         d_printf("findfirst_count:                %u\n", profile_p->Trans2_findfirst_count);
00309         d_printf("findfirst_time:                 %u\n", profile_p->Trans2_findfirst_time);
00310         d_printf("findnext_count:                 %u\n", profile_p->Trans2_findnext_count);
00311         d_printf("findnext_time:                  %u\n", profile_p->Trans2_findnext_time);
00312         d_printf("qfsinfo_count:                  %u\n", profile_p->Trans2_qfsinfo_count);
00313         d_printf("qfsinfo_time:                   %u\n", profile_p->Trans2_qfsinfo_time);
00314         d_printf("setfsinfo_count:                %u\n", profile_p->Trans2_setfsinfo_count);
00315         d_printf("setfsinfo_time:                 %u\n", profile_p->Trans2_setfsinfo_time);
00316         d_printf("qpathinfo_count:                %u\n", profile_p->Trans2_qpathinfo_count);
00317         d_printf("qpathinfo_time:                 %u\n", profile_p->Trans2_qpathinfo_time);
00318         d_printf("setpathinfo_count:              %u\n", profile_p->Trans2_setpathinfo_count);
00319         d_printf("setpathinfo_time:               %u\n", profile_p->Trans2_setpathinfo_time);
00320         d_printf("qfileinfo_count:                %u\n", profile_p->Trans2_qfileinfo_count);
00321         d_printf("qfileinfo_time:                 %u\n", profile_p->Trans2_qfileinfo_time);
00322         d_printf("setfileinfo_count:              %u\n", profile_p->Trans2_setfileinfo_count);
00323         d_printf("setfileinfo_time:               %u\n", profile_p->Trans2_setfileinfo_time);
00324         d_printf("fsctl_count:                    %u\n", profile_p->Trans2_fsctl_count);
00325         d_printf("fsctl_time:                     %u\n", profile_p->Trans2_fsctl_time);
00326         d_printf("ioctl_count:                    %u\n", profile_p->Trans2_ioctl_count);
00327         d_printf("ioctl_time:                     %u\n", profile_p->Trans2_ioctl_time);
00328         d_printf("findnotifyfirst_count:          %u\n", profile_p->Trans2_findnotifyfirst_count);
00329         d_printf("findnotifyfirst_time:           %u\n", profile_p->Trans2_findnotifyfirst_time);
00330         d_printf("findnotifynext_count:           %u\n", profile_p->Trans2_findnotifynext_count);
00331         d_printf("findnotifynext_time:            %u\n", profile_p->Trans2_findnotifynext_time);
00332         d_printf("mkdir_count:                    %u\n", profile_p->Trans2_mkdir_count);
00333         d_printf("mkdir_time:                     %u\n", profile_p->Trans2_mkdir_time);
00334         d_printf("session_setup_count:            %u\n", profile_p->Trans2_session_setup_count);
00335         d_printf("session_setup_time:             %u\n", profile_p->Trans2_session_setup_time);
00336         d_printf("get_dfs_referral_count:         %u\n", profile_p->Trans2_get_dfs_referral_count);
00337         d_printf("get_dfs_referral_time:          %u\n", profile_p->Trans2_get_dfs_referral_time);
00338         d_printf("report_dfs_inconsistancy_count: %u\n", profile_p->Trans2_report_dfs_inconsistancy_count);
00339         d_printf("report_dfs_inconsistancy_time:  %u\n", profile_p->Trans2_report_dfs_inconsistancy_time);
00340 
00341         profile_separator("NT Transact Calls");
00342         d_printf("create_count:                   %u\n", profile_p->NT_transact_create_count);
00343         d_printf("create_time:                    %u\n", profile_p->NT_transact_create_time);
00344         d_printf("ioctl_count:                    %u\n", profile_p->NT_transact_ioctl_count);
00345         d_printf("ioctl_time:                     %u\n", profile_p->NT_transact_ioctl_time);
00346         d_printf("set_security_desc_count:        %u\n", profile_p->NT_transact_set_security_desc_count);
00347         d_printf("set_security_desc_time:         %u\n", profile_p->NT_transact_set_security_desc_time);
00348         d_printf("notify_change_count:            %u\n", profile_p->NT_transact_notify_change_count);
00349         d_printf("notify_change_time:             %u\n", profile_p->NT_transact_notify_change_time);
00350         d_printf("rename_count:                   %u\n", profile_p->NT_transact_rename_count);
00351         d_printf("rename_time:                    %u\n", profile_p->NT_transact_rename_time);
00352         d_printf("query_security_desc_count:      %u\n", profile_p->NT_transact_query_security_desc_count);
00353         d_printf("query_security_desc_time:       %u\n", profile_p->NT_transact_query_security_desc_time);
00354 
00355         profile_separator("ACL Calls");
00356         d_printf("get_nt_acl_count:               %u\n", profile_p->get_nt_acl_count);
00357         d_printf("get_nt_acl_time:                %u\n", profile_p->get_nt_acl_time);
00358         d_printf("fget_nt_acl_count:              %u\n", profile_p->fget_nt_acl_count);
00359         d_printf("fget_nt_acl_time:               %u\n", profile_p->fget_nt_acl_time);
00360         d_printf("set_nt_acl_count:               %u\n", profile_p->set_nt_acl_count);
00361         d_printf("set_nt_acl_time:                %u\n", profile_p->set_nt_acl_time);
00362         d_printf("fset_nt_acl_count:              %u\n", profile_p->fset_nt_acl_count);
00363         d_printf("fset_nt_acl_time:               %u\n", profile_p->fset_nt_acl_time);
00364         d_printf("chmod_acl_count:                %u\n", profile_p->chmod_acl_count);
00365         d_printf("chmod_acl_time:                 %u\n", profile_p->chmod_acl_time);
00366         d_printf("fchmod_acl_count:               %u\n", profile_p->fchmod_acl_count);
00367         d_printf("fchmod_acl_time:                %u\n", profile_p->fchmod_acl_time);
00368 
00369         profile_separator("NMBD Calls");
00370         d_printf("name_release_count:             %u\n", profile_p->name_release_count);
00371         d_printf("name_release_time:              %u\n", profile_p->name_release_time);
00372         d_printf("name_refresh_count:             %u\n", profile_p->name_refresh_count);
00373         d_printf("name_refresh_time:              %u\n", profile_p->name_refresh_time);
00374         d_printf("name_registration_count:        %u\n", profile_p->name_registration_count);
00375         d_printf("name_registration_time:         %u\n", profile_p->name_registration_time);
00376         d_printf("node_status_count:              %u\n", profile_p->node_status_count);
00377         d_printf("node_status_time:               %u\n", profile_p->node_status_time);
00378         d_printf("name_query_count:               %u\n", profile_p->name_query_count);
00379         d_printf("name_query_time:                %u\n", profile_p->name_query_time);
00380         d_printf("host_announce_count:            %u\n", profile_p->host_announce_count);
00381         d_printf("host_announce_time:             %u\n", profile_p->host_announce_time);
00382         d_printf("workgroup_announce_count:       %u\n", profile_p->workgroup_announce_count);
00383         d_printf("workgroup_announce_time:        %u\n", profile_p->workgroup_announce_time);
00384         d_printf("local_master_announce_count:    %u\n", profile_p->local_master_announce_count);
00385         d_printf("local_master_announce_time:     %u\n", profile_p->local_master_announce_time);
00386         d_printf("master_browser_announce_count:  %u\n", profile_p->master_browser_announce_count);
00387         d_printf("master_browser_announce_time:   %u\n", profile_p->master_browser_announce_time);
00388         d_printf("lm_host_announce_count:         %u\n", profile_p->lm_host_announce_count);
00389         d_printf("lm_host_announce_time:          %u\n", profile_p->lm_host_announce_time);
00390         d_printf("get_backup_list_count:          %u\n", profile_p->get_backup_list_count);
00391         d_printf("get_backup_list_time:           %u\n", profile_p->get_backup_list_time);
00392         d_printf("reset_browser_count:            %u\n", profile_p->reset_browser_count);
00393         d_printf("reset_browser_time:             %u\n", profile_p->reset_browser_time);
00394         d_printf("announce_request_count:         %u\n", profile_p->announce_request_count);
00395         d_printf("announce_request_time:          %u\n", profile_p->announce_request_time);
00396         d_printf("lm_announce_request_count:      %u\n", profile_p->lm_announce_request_count);
00397         d_printf("lm_announce_request_time:       %u\n", profile_p->lm_announce_request_time);
00398         d_printf("domain_logon_count:             %u\n", profile_p->domain_logon_count);
00399         d_printf("domain_logon_time:              %u\n", profile_p->domain_logon_time);
00400         d_printf("sync_browse_lists_count:        %u\n", profile_p->sync_browse_lists_count);
00401         d_printf("sync_browse_lists_time:         %u\n", profile_p->sync_browse_lists_time);
00402         d_printf("run_elections_count:            %u\n", profile_p->run_elections_count);
00403         d_printf("run_elections_time:             %u\n", profile_p->run_elections_time);
00404         d_printf("election_count:                 %u\n", profile_p->election_count);
00405         d_printf("election_time:                  %u\n", profile_p->election_time);
00406 #else /* WITH_PROFILE */
00407         fprintf(stderr, "Profile data unavailable\n");
00408 #endif /* WITH_PROFILE */
00409 
00410         return True;
00411 }
00412 
00413 #ifdef WITH_PROFILE
00414 
00415 /* Convert microseconds to milliseconds. */
00416 #define usec_to_msec(s) ((s) / 1000)
00417 /* Convert microseconds to seconds. */
00418 #define usec_to_sec(s) ((s) / 1000000)
00419 /* One second in microseconds. */
00420 #define one_second_usec (1000000)
00421 
00422 #define sample_interval_usec one_second_usec
00423 
00424 #define percent_time(used, period) ((double)(used) / (double)(period) * 100.0 )
00425 
00426 static int print_count_samples(
00427         const struct profile_stats * const current,
00428         const struct profile_stats * const last,
00429         SMB_BIG_UINT delta_usec)
00430 {
00431         int i;
00432         int count = 0;
00433         unsigned step;
00434         SMB_BIG_UINT spent;
00435         int delta_sec;
00436         const char * name;
00437         char buf[40];
00438 
00439         if (delta_usec == 0) {
00440                 return 0;
00441         }
00442 
00443         buf[0] = '\0';
00444         delta_sec = usec_to_sec(delta_usec);
00445 
00446         for (i = 0; i < PR_VALUE_MAX; ++i) {
00447                 step = current->count[i] - last->count[i];
00448                 spent = current->time[i] - last->time[i];
00449 
00450                 if (step) {
00451                         ++count;
00452 
00453                         name = profile_value_name(i);
00454 
00455                         if (buf[0] == '\0') {
00456                                 snprintf(buf, sizeof(buf),
00457                                         "%s %d/sec (%.2f%%)",
00458                                         name, step / delta_sec,
00459                                         percent_time(spent, delta_usec));
00460                         } else {
00461                                 printf("%-40s %s %d/sec (%.2f%%)\n",
00462                                         buf, name, step / delta_sec,
00463                                         percent_time(spent, delta_usec));
00464                                 buf[0] = '\0';
00465                         }
00466                 }
00467         }
00468 
00469         return count;
00470 }
00471 
00472 static struct profile_stats     sample_data[2];
00473 static SMB_BIG_UINT             sample_time[2];
00474 
00475 BOOL status_profile_rates(BOOL verbose)
00476 {
00477         SMB_BIG_UINT remain_usec;
00478         SMB_BIG_UINT next_usec;
00479         SMB_BIG_UINT delta_usec;
00480 
00481         int last = 0;
00482         int current = 1;
00483         int tmp;
00484 
00485         if (verbose) {
00486             fprintf(stderr, "Sampling stats at %d sec intervals\n",
00487                     usec_to_sec(sample_interval_usec));
00488         }
00489 
00490         if (!profile_setup(True)) {
00491                 fprintf(stderr,"Failed to initialise profile memory\n");
00492                 return False;
00493         }
00494 
00495         memcpy(&sample_data[last], profile_p, sizeof(*profile_p));
00496         for (;;) {
00497                 sample_time[current] = profile_timestamp();
00498                 next_usec = sample_time[current] + sample_interval_usec;
00499 
00500                 /* Take a sample. */
00501                 memcpy(&sample_data[current], profile_p, sizeof(*profile_p));
00502 
00503                 /* Rate convert some values and print results. */
00504                 delta_usec = sample_time[current] - sample_time[last];
00505 
00506                 if (print_count_samples(&sample_data[current],
00507                         &sample_data[last], delta_usec)) {
00508                         printf("\n");
00509                 }
00510 
00511                 /* Swap sampling buffers. */
00512                 tmp = last;
00513                 last = current;
00514                 current = tmp;
00515 
00516                 /* Delay until next sample time. */
00517                 remain_usec = next_usec - profile_timestamp();
00518                 if (remain_usec > sample_interval_usec) {
00519                         fprintf(stderr, "eek! falling behind sampling rate!\n");
00520                 } else {
00521                         if (verbose) {
00522                             fprintf(stderr,
00523                                     "delaying for %lu msec\n",
00524                                     (unsigned long )usec_to_msec(remain_usec));
00525                         }
00526 
00527                         sys_usleep(remain_usec);
00528                 }
00529 
00530         }
00531 
00532         return True;
00533 }
00534 
00535 #else /* WITH_PROFILE */
00536 
00537 BOOL status_profile_rates(BOOL verbose)
00538 {
00539         fprintf(stderr, "Profile data unavailable\n");
00540         return False;
00541 }
00542 
00543 #endif /* WITH_PROFILE */
00544 

Sambaに対してSat Aug 29 21:23:30 2009に生成されました。  doxygen 1.4.7