static void profile_storaged_display() { time_t elapse; int i, days, hours, mins, secs; spp_profiler_t profiler; if (sp_client_get_profiler(&profiler_client.sp[0], &profiler) != 0) { perror("failed to to get profiler"); exit(EXIT_FAILURE); } elapse = (int) (profiler.now - profiler.uptime); days = (int) (elapse / 86400); hours = (int)((elapse / 3600) - (days * 24)); mins = (int)((elapse / 60) - (days * 1440) - (hours * 60)); secs = (int) (elapse % 60); fprintf(stdout, "storaged: %s - %"PRIu16" process(es), uptime: %d days, %d:%d:%d\n", profiler.vers, profiler.nb_io_processes, days, hours, mins, secs); fprintf(stdout, "%-12s %-16s %-12s %-12s %-12s %-12s %-12s\n", "PORT", "OP", "CALL", "RATE(msg/s)", "CPU(us)", "COUNT(B)", "THROUGHPUT(MB/s)"); sp_display_probe(profiler, stat); sp_display_probe(profiler, ports); sp_display_probe(profiler, remove); for (i = 0; i < profiler.nb_io_processes; i++) { spp_profiler_t sp; if (sp_client_get_profiler(&profiler_client.sp[i+1], &sp) != 0) { perror("failed to get profile"); exit(EXIT_FAILURE); } sp_display_io_probe(profiler.io_process_ports[i], sp, read); sp_display_io_probe(profiler.io_process_ports[i], sp, write); sp_display_io_probe(profiler.io_process_ports[i], sp, truncate); } }
static void profile_storaged_display() { time_t elapse; int i, j, days, hours, mins, secs; spp_profiler_t profiler; // Get profiler from master storaged process if (sp_client_get_profiler(&profiler_client.sp[0], &profiler) != 0) { perror("failed to to get profiler"); exit(EXIT_FAILURE); } // Compute uptime for storaged process elapse = (int) (profiler.now - profiler.uptime); days = (int) (elapse / 86400); hours = (int) ((elapse / 3600) - (days * 24)); mins = (int) ((elapse / 60) - (days * 1440) - (hours * 60)); secs = (int) (elapse % 60); // Print general profiling values for storaged fprintf(stdout, "storaged: %s - %"PRIu16" IO process(es)," " uptime: %d days, %d:%d:%d\n", profiler.vers, profiler.nb_io_processes, days, hours, mins, secs); // Print header for operations profiling values for storaged fprintf(stdout, "%-12s %-16s %-12s %-12s %-12s %-12s %-12s\n", "PORT", "OP", "CALL", "RATE(msg/s)", "CPU(us)", "COUNT(B)", "THROUGHPUT(MB/s)"); // Print master storaged process profiling values sp_display_probe(profiler, stat); sp_display_probe(profiler, ports); sp_display_probe(profiler, remove); // Print IO storaged process profiling values for (i = 0; i < profiler.nb_io_processes; i++) { spp_profiler_t sp; if (sp_client_get_profiler(&profiler_client.sp[i + 1], &sp) != 0) { perror("failed to get profile"); exit(EXIT_FAILURE); } sp_display_io_probe(profiler.io_process_ports[i], sp, read); sp_display_io_probe(profiler.io_process_ports[i], sp, write); sp_display_io_probe(profiler.io_process_ports[i], sp, truncate); } // Print RBS storaged process profiling values if (profiler.nb_rb_processes != 0) { fprintf(stdout, "Nb. of storage(s) to rebuild at startup: %"PRIu16"\n", profiler.nb_rb_processes); fprintf(stdout, "%-12s %-12s %-12s %-16s %-16s\n", "PORT", "CID", "SID", "STATUS", "FILES REBUILD"); // Print RBS storaged process profiling values // for each storage to rebuild for (i = 0; i < profiler.nb_rb_processes; i++) { spp_profiler_t sp; j = profiler.nb_io_processes + i + 1; // If port == 0 // The rebuild process is completed if (profiler_client.sp[j].port == 0) { sp_display_rbs_finish_probe(profiler.rb_process_ports[i], profiler.rbs_cids[i], profiler.rbs_sids[i]); continue; } // The rebuild process is not completed if (sp_client_get_profiler(&profiler_client.sp[j], &sp) != 0) { if (profiling_watch) { sp_display_rbs_finish_probe(profiler.rb_process_ports[i], profiler.rbs_cids[i], profiler.rbs_sids[i]); continue; } else { fprintf(stderr, "failed to get master profiler: %s\n", strerror(errno)); } } sp_display_rbs_progress_probe(profiler.rb_process_ports[i], profiler.rbs_cids[i], profiler.rbs_sids[i], sp, rb_files_total, rb_files_current); } } }