@cryptotaxi247 / netdata-1 / commits / a40dabb6f

eliminate unecessary index lookups from diskstats

Costa Tsaousis (ktsaou) committed Oct 15, 2017 at 01:53 UTC a40dabb6fa960feaecab63fbb6a8384927a05760
1 file changed +63 -38
src/proc_diskstats.c
+63 -38
@@ -31,16 +31,41 @@ static struct disk {
31
32 int updated;
33
34 - RRDSET *st_avgsz;
35 - RRDSET *st_await;
36 - RRDSET *st_backlog;
34 RRDSET *st_io;
38 - RRDSET *st_iotime;
39 - RRDSET *st_mops;
35 + RRDDIM *rd_io_reads;
36 + RRDDIM *rd_io_writes;
37 +
38 RRDSET *st_ops;
39 + RRDDIM *rd_ops_reads;
40 + RRDDIM *rd_ops_writes;
41 +
42 RRDSET *st_qops;
42 - RRDSET *st_svctm;
43 + RRDDIM *rd_qops_operations;
44 +
45 + RRDSET *st_backlog;
46 + RRDDIM *rd_backlog_backlog;
47 +
48 RRDSET *st_util;
49 + RRDDIM *rd_util_utilization;
50 +
51 + RRDSET *st_mops;
52 + RRDDIM *rd_mops_reads;
53 + RRDDIM *rd_mops_writes;
54 +
55 + RRDSET *st_iotime;
56 + RRDDIM *rd_iotime_reads;
57 + RRDDIM *rd_iotime_writes;
58 +
59 + RRDSET *st_await;
60 + RRDDIM *rd_await_reads;
61 + RRDDIM *rd_await_writes;
62 +
63 + RRDSET *st_avgsz;
64 + RRDDIM *rd_avgsz_reads;
65 + RRDDIM *rd_avgsz_writes;
66 +
67 + RRDSET *st_svctm;
68 + RRDDIM *rd_svctm_svctm;
69
70 struct disk *next;
71 } *disk_root = NULL;
@@ -525,13 +550,13 @@ int do_proc_diskstats(int update_every, usec_t dt) {
550 , RRDSET_TYPE_AREA
551 );
552
528 - rrddim_add(d->st_io, "reads", NULL, d->sector_size, 1024, RRD_ALGORITHM_INCREMENTAL);
529 - rrddim_add(d->st_io, "writes", NULL, d->sector_size * -1, 1024, RRD_ALGORITHM_INCREMENTAL);
553 + d->rd_io_reads = rrddim_add(d->st_io, "reads", NULL, d->sector_size, 1024, RRD_ALGORITHM_INCREMENTAL);
554 + d->rd_io_writes = rrddim_add(d->st_io, "writes", NULL, d->sector_size * -1, 1024, RRD_ALGORITHM_INCREMENTAL);
555 }
556 else rrdset_next(d->st_io);
557
533 - last_readsectors = rrddim_set(d->st_io, "reads", readsectors);
534 - last_writesectors = rrddim_set(d->st_io, "writes", writesectors);
558 + last_readsectors = rrddim_set_by_pointer(d->st_io, d->rd_io_reads, readsectors);
559 + last_writesectors = rrddim_set_by_pointer(d->st_io, d->rd_io_writes, writesectors);
560 rrdset_done(d->st_io);
561 }
562
@@ -558,13 +583,13 @@ int do_proc_diskstats(int update_every, usec_t dt) {
583
584 rrdset_flag_set(d->st_ops, RRDSET_FLAG_DETAIL);
585
561 - rrddim_add(d->st_ops, "reads", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
562 - rrddim_add(d->st_ops, "writes", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
586 + d->rd_ops_reads = rrddim_add(d->st_ops, "reads", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
587 + d->rd_ops_writes = rrddim_add(d->st_ops, "writes", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
588 }
589 else rrdset_next(d->st_ops);
590
566 - last_reads = rrddim_set(d->st_ops, "reads", reads);
567 - last_writes = rrddim_set(d->st_ops, "writes", writes);
591 + last_reads = rrddim_set_by_pointer(d->st_ops, d->rd_ops_reads, reads);
592 + last_writes = rrddim_set_by_pointer(d->st_ops, d->rd_ops_writes, writes);
593 rrdset_done(d->st_ops);
594 }
595
@@ -591,11 +616,11 @@ int do_proc_diskstats(int update_every, usec_t dt) {
616
617 rrdset_flag_set(d->st_qops, RRDSET_FLAG_DETAIL);
618
594 - rrddim_add(d->st_qops, "operations", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
619 + d->rd_qops_operations = rrddim_add(d->st_qops, "operations", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
620 }
621 else rrdset_next(d->st_qops);
622
598 - rrddim_set(d->st_qops, "operations", queued_ios);
623 + rrddim_set_by_pointer(d->st_qops, d->rd_qops_operations, queued_ios);
624 rrdset_done(d->st_qops);
625 }
626
@@ -622,11 +647,11 @@ int do_proc_diskstats(int update_every, usec_t dt) {
647
648 rrdset_flag_set(d->st_backlog, RRDSET_FLAG_DETAIL);
649
625 - rrddim_add(d->st_backlog, "backlog", NULL, 1, 10, RRD_ALGORITHM_INCREMENTAL);
650 + d->rd_backlog_backlog = rrddim_add(d->st_backlog, "backlog", NULL, 1, 10, RRD_ALGORITHM_INCREMENTAL);
651 }
652 else rrdset_next(d->st_backlog);
653
629 - rrddim_set(d->st_backlog, "backlog", backlog_ms);
654 + rrddim_set_by_pointer(d->st_backlog, d->rd_backlog_backlog, backlog_ms);
655 rrdset_done(d->st_backlog);
656 }
657
@@ -653,11 +678,11 @@ int do_proc_diskstats(int update_every, usec_t dt) {
678
679 rrdset_flag_set(d->st_util, RRDSET_FLAG_DETAIL);
680
656 - rrddim_add(d->st_util, "utilization", NULL, 1, 10, RRD_ALGORITHM_INCREMENTAL);
681 + d->rd_util_utilization = rrddim_add(d->st_util, "utilization", NULL, 1, 10, RRD_ALGORITHM_INCREMENTAL);
682 }
683 else rrdset_next(d->st_util);
684
660 - last_busy_ms = rrddim_set(d->st_util, "utilization", busy_ms);
685 + last_busy_ms = rrddim_set_by_pointer(d->st_util, d->rd_util_utilization, busy_ms);
686 rrdset_done(d->st_util);
687 }
688
@@ -684,13 +709,13 @@ int do_proc_diskstats(int update_every, usec_t dt) {
709
710 rrdset_flag_set(d->st_mops, RRDSET_FLAG_DETAIL);
711
687 - rrddim_add(d->st_mops, "reads", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
688 - rrddim_add(d->st_mops, "writes", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
712 + d->rd_mops_reads = rrddim_add(d->st_mops, "reads", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
713 + d->rd_mops_writes = rrddim_add(d->st_mops, "writes", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
714 }
715 else rrdset_next(d->st_mops);
716
692 - rrddim_set(d->st_mops, "reads", mreads);
693 - rrddim_set(d->st_mops, "writes", mwrites);
717 + rrddim_set_by_pointer(d->st_mops, d->rd_mops_reads, mreads);
718 + rrddim_set_by_pointer(d->st_mops, d->rd_mops_writes, mwrites);
719 rrdset_done(d->st_mops);
720 }
721
@@ -717,13 +742,13 @@ int do_proc_diskstats(int update_every, usec_t dt) {
742
743 rrdset_flag_set(d->st_iotime, RRDSET_FLAG_DETAIL);
744
720 - rrddim_add(d->st_iotime, "reads", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
721 - rrddim_add(d->st_iotime, "writes", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
745 + d->rd_iotime_reads = rrddim_add(d->st_iotime, "reads", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
746 + d->rd_iotime_writes = rrddim_add(d->st_iotime, "writes", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
747 }
748 else rrdset_next(d->st_iotime);
749
725 - last_readms = rrddim_set(d->st_iotime, "reads", readms);
726 - last_writems = rrddim_set(d->st_iotime, "writes", writems);
750 + last_readms = rrddim_set_by_pointer(d->st_iotime, d->rd_iotime_reads, readms);
751 + last_writems = rrddim_set_by_pointer(d->st_iotime, d->rd_iotime_writes, writems);
752 rrdset_done(d->st_iotime);
753 }
754
@@ -753,13 +778,13 @@ int do_proc_diskstats(int update_every, usec_t dt) {
778
779 rrdset_flag_set(d->st_await, RRDSET_FLAG_DETAIL);
780
756 - rrddim_add(d->st_await, "reads", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
757 - rrddim_add(d->st_await, "writes", NULL, -1, 1, RRD_ALGORITHM_ABSOLUTE);
781 + d->rd_await_reads = rrddim_add(d->st_await, "reads", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
782 + d->rd_await_writes = rrddim_add(d->st_await, "writes", NULL, -1, 1, RRD_ALGORITHM_ABSOLUTE);
783 }
784 else rrdset_next(d->st_await);
785
761 - rrddim_set(d->st_await, "reads", (reads - last_reads) ? (readms - last_readms) / (reads - last_reads) : 0);
762 - rrddim_set(d->st_await, "writes", (writes - last_writes) ? (writems - last_writems) / (writes - last_writes) : 0);
786 + rrddim_set_by_pointer(d->st_await, d->rd_await_reads, (reads - last_reads) ? (readms - last_readms) / (reads - last_reads) : 0);
787 + rrddim_set_by_pointer(d->st_await, d->rd_await_writes, (writes - last_writes) ? (writems - last_writems) / (writes - last_writes) : 0);
788 rrdset_done(d->st_await);
789 }
790
@@ -784,13 +809,13 @@ int do_proc_diskstats(int update_every, usec_t dt) {
809
810 rrdset_flag_set(d->st_avgsz, RRDSET_FLAG_DETAIL);
811
787 - rrddim_add(d->st_avgsz, "reads", NULL, d->sector_size, 1024, RRD_ALGORITHM_ABSOLUTE);
788 - rrddim_add(d->st_avgsz, "writes", NULL, d->sector_size * -1, 1024, RRD_ALGORITHM_ABSOLUTE);
812 + d->rd_avgsz_reads = rrddim_add(d->st_avgsz, "reads", NULL, d->sector_size, 1024, RRD_ALGORITHM_ABSOLUTE);
813 + d->rd_avgsz_writes = rrddim_add(d->st_avgsz, "writes", NULL, d->sector_size * -1, 1024, RRD_ALGORITHM_ABSOLUTE);
814 }
815 else rrdset_next(d->st_avgsz);
816
792 - rrddim_set(d->st_avgsz, "reads", (reads - last_reads) ? (readsectors - last_readsectors) / (reads - last_reads) : 0);
793 - rrddim_set(d->st_avgsz, "writes", (writes - last_writes) ? (writesectors - last_writesectors) / (writes - last_writes) : 0);
817 + rrddim_set_by_pointer(d->st_avgsz, d->rd_avgsz_reads, (reads - last_reads) ? (readsectors - last_readsectors) / (reads - last_reads) : 0);
818 + rrddim_set_by_pointer(d->st_avgsz, d->rd_avgsz_writes, (writes - last_writes) ? (writesectors - last_writesectors) / (writes - last_writes) : 0);
819 rrdset_done(d->st_avgsz);
820 }
821
@@ -815,11 +840,11 @@ int do_proc_diskstats(int update_every, usec_t dt) {
840
841 rrdset_flag_set(d->st_svctm, RRDSET_FLAG_DETAIL);
842
818 - rrddim_add(d->st_svctm, "svctm", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
843 + d->rd_svctm_svctm = rrddim_add(d->st_svctm, "svctm", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
844 }
845 else rrdset_next(d->st_svctm);
846
822 - rrddim_set(d->st_svctm, "svctm", ((reads - last_reads) + (writes - last_writes)) ? (busy_ms - last_busy_ms) / ((reads - last_reads) + (writes - last_writes)) : 0);
847 + rrddim_set_by_pointer(d->st_svctm, d->rd_svctm_svctm, ((reads - last_reads) + (writes - last_writes)) ? (busy_ms - last_busy_ms) / ((reads - last_reads) + (writes - last_writes)) : 0);
848 rrdset_done(d->st_svctm);
849 }
850 }