Esempio n. 1
0
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);
    }
}
Esempio n. 2
0
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);
        }
    }
}