| 1 | // SPDX-License-Identifier: GPL-3.0-or-later |
| 2 | |
| 3 | #define PULSE_INTERNALS 1 |
| 4 | #include "pulse-string.h" |
| 5 | |
| 6 | void pulse_string_do(bool extended) { |
| 7 | if(!extended) return; |
| 8 | |
| 9 | static RRDSET *st_ops = NULL, *st_entries = NULL, *st_mem = NULL; |
| 10 | static RRDDIM *rd_ops_inserts = NULL, *rd_ops_deletes = NULL; |
| 11 | static RRDDIM *rd_entries_entries = NULL; |
| 12 | static RRDDIM *rd_mem = NULL; |
| 13 | static RRDDIM *rd_mem_idx = NULL; |
| 14 | #ifdef NETDATA_INTERNAL_CHECKS |
| 15 | static RRDDIM *rd_entries_refs = NULL, *rd_ops_releases = NULL, *rd_ops_duplications = NULL, *rd_ops_searches = NULL; |
| 16 | #endif |
| 17 | |
| 18 | size_t inserts, deletes, searches, entries, references, memory, memory_index, duplications, releases; |
| 19 | |
| 20 | string_statistics(&inserts, &deletes, &searches, &entries, &references, &memory, &memory_index, &duplications, &releases); |
| 21 | |
| 22 | if (unlikely(!st_ops)) { |
| 23 | st_ops = rrdset_create_localhost( |
| 24 | "netdata" |
| 25 | , "strings_ops" |
| 26 | , NULL |
| 27 | , "strings" |
| 28 | , NULL |
| 29 | , "Strings operations" |
| 30 | , "ops/s" |
| 31 | , "netdata" |
| 32 | , "pulse" |
| 33 | , 910000 |
| 34 | , localhost->rrd_update_every |
| 35 | , RRDSET_TYPE_LINE); |
| 36 | |
| 37 | rd_ops_inserts = rrddim_add(st_ops, "inserts", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL); |
| 38 | rd_ops_deletes = rrddim_add(st_ops, "deletes", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL); |
| 39 | #ifdef NETDATA_INTERNAL_CHECKS |
| 40 | rd_ops_searches = rrddim_add(st_ops, "searches", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL); |
| 41 | rd_ops_duplications = rrddim_add(st_ops, "duplications", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL); |
| 42 | rd_ops_releases = rrddim_add(st_ops, "releases", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL); |
| 43 | #endif |
| 44 | } |
| 45 | |
| 46 | rrddim_set_by_pointer(st_ops, rd_ops_inserts, (collected_number)inserts); |
| 47 | rrddim_set_by_pointer(st_ops, rd_ops_deletes, (collected_number)deletes); |
| 48 | #ifdef NETDATA_INTERNAL_CHECKS |
| 49 | rrddim_set_by_pointer(st_ops, rd_ops_searches, (collected_number)searches); |
| 50 | rrddim_set_by_pointer(st_ops, rd_ops_duplications, (collected_number)duplications); |
| 51 | rrddim_set_by_pointer(st_ops, rd_ops_releases, (collected_number)releases); |
| 52 | #endif |
| 53 | rrdset_done(st_ops); |
| 54 | |
| 55 | if (unlikely(!st_entries)) { |
| 56 | st_entries = rrdset_create_localhost( |
| 57 | "netdata" |
| 58 | , "strings_entries" |
| 59 | , NULL |
| 60 | , "strings" |
| 61 | , NULL |
| 62 | , "Strings entries" |
| 63 | , "entries" |
| 64 | , "netdata" |
| 65 | , "pulse" |
| 66 | , 910001 |
| 67 | , localhost->rrd_update_every |
| 68 | , RRDSET_TYPE_AREA); |
| 69 | |
| 70 | rd_entries_entries = rrddim_add(st_entries, "entries", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE); |
| 71 | #ifdef NETDATA_INTERNAL_CHECKS |
| 72 | rd_entries_refs = rrddim_add(st_entries, "references", NULL, 1, -1, RRD_ALGORITHM_ABSOLUTE); |
| 73 | #endif |
| 74 | } |
| 75 | |
| 76 | rrddim_set_by_pointer(st_entries, rd_entries_entries, (collected_number)entries); |
| 77 | #ifdef NETDATA_INTERNAL_CHECKS |
| 78 | rrddim_set_by_pointer(st_entries, rd_entries_refs, (collected_number)references); |
| 79 | #endif |
| 80 | rrdset_done(st_entries); |
| 81 | |
| 82 | if (unlikely(!st_mem)) { |
| 83 | st_mem = rrdset_create_localhost( |
| 84 | "netdata" |
| 85 | , "strings_memory" |
| 86 | , NULL |
| 87 | , "strings" |
| 88 | , NULL |
| 89 | , "Strings memory" |
| 90 | , "bytes" |
| 91 | , "netdata" |
| 92 | , "pulse" |
| 93 | , 910001 |
| 94 | , localhost->rrd_update_every |
| 95 | , RRDSET_TYPE_STACKED); |
| 96 | |
| 97 | rd_mem = rrddim_add(st_mem, "memory", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE); |
| 98 | rd_mem_idx = rrddim_add(st_mem, "index", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE); |
| 99 | } |
| 100 | |
| 101 | rrddim_set_by_pointer(st_mem, rd_mem, (collected_number)memory); |
| 102 | rrddim_set_by_pointer(st_mem, rd_mem_idx, (collected_number)memory_index); |
| 103 | rrdset_done(st_mem); |
| 104 | } |