]> arthur.barton.de Git - netdata.git/blobdiff - src/global_statistics.c
added diskspace plugin monitoring charts
[netdata.git] / src / global_statistics.c
index 0512c4382c570ed1e1ec4aeb21055ee11c83e8f0..a698615f4e770aaf9e947b1b7419f44e8a42872a 100644 (file)
@@ -25,22 +25,19 @@ void finished_web_request_statistics(uint64_t dt,
                                      uint64_t bytes_sent,
                                      uint64_t content_size,
                                      uint64_t compressed_content_size) {
-#ifndef NETDATA_NO_ATOMIC_INSTRUCTIONS
+#if defined(HAVE_C___ATOMIC) && !defined(NETDATA_NO_ATOMIC_INSTRUCTIONS)
     uint64_t old_web_usec_max = global_statistics.web_usec_max;
-    while(dt > old_web_usec_max) {
-        if(__sync_bool_compare_and_swap(&global_statistics.web_usec_max, old_web_usec_max, dt))
-            old_web_usec_max = dt;
-        else
-            old_web_usec_max = global_statistics.web_usec_max;
-    }
-
-    __sync_fetch_and_add(&global_statistics.web_requests, 1);
-    __sync_fetch_and_add(&global_statistics.web_usec, dt);
-    __sync_fetch_and_add(&global_statistics.bytes_received, bytes_received);
-    __sync_fetch_and_add(&global_statistics.bytes_sent, bytes_sent);
-    __sync_fetch_and_add(&global_statistics.content_size, content_size);
-    __sync_fetch_and_add(&global_statistics.compressed_content_size, compressed_content_size);
+    while(dt > old_web_usec_max)
+        __atomic_compare_exchange(&global_statistics.web_usec_max, &old_web_usec_max, &dt, 1, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST);
+
+    __atomic_fetch_add(&global_statistics.web_requests, 1, __ATOMIC_SEQ_CST);
+    __atomic_fetch_add(&global_statistics.web_usec, dt, __ATOMIC_SEQ_CST);
+    __atomic_fetch_add(&global_statistics.bytes_received, bytes_received, __ATOMIC_SEQ_CST);
+    __atomic_fetch_add(&global_statistics.bytes_sent, bytes_sent, __ATOMIC_SEQ_CST);
+    __atomic_fetch_add(&global_statistics.content_size, content_size, __ATOMIC_SEQ_CST);
+    __atomic_fetch_add(&global_statistics.compressed_content_size, compressed_content_size, __ATOMIC_SEQ_CST);
 #else
+#warning NOT using atomic operations - using locks for global statistics
     if (web_server_mode == WEB_SERVER_MODE_MULTI_THREADED)
         global_statistics_lock();
 
@@ -60,8 +57,8 @@ void finished_web_request_statistics(uint64_t dt,
 }
 
 void web_client_connected(void) {
-#ifndef NETDATA_NO_ATOMIC_INSTRUCTIONS
-    __sync_fetch_and_add(&global_statistics.connected_clients, 1);
+#if defined(HAVE_C___ATOMIC) && !defined(NETDATA_NO_ATOMIC_INSTRUCTIONS)
+    __atomic_fetch_add(&global_statistics.connected_clients, 1, __ATOMIC_SEQ_CST);
 #else
     if (web_server_mode == WEB_SERVER_MODE_MULTI_THREADED)
         global_statistics_lock();
@@ -74,8 +71,8 @@ void web_client_connected(void) {
 }
 
 void web_client_disconnected(void) {
-#ifndef NETDATA_NO_ATOMIC_INSTRUCTIONS
-    __sync_fetch_and_sub(&global_statistics.connected_clients, 1);
+#if defined(HAVE_C___ATOMIC) && !defined(NETDATA_NO_ATOMIC_INSTRUCTIONS)
+    __atomic_fetch_sub(&global_statistics.connected_clients, 1, __ATOMIC_SEQ_CST);
 #else
     if (web_server_mode == WEB_SERVER_MODE_MULTI_THREADED)
         global_statistics_lock();
@@ -89,18 +86,21 @@ void web_client_disconnected(void) {
 
 
 inline void global_statistics_copy(struct global_statistics *gs, uint8_t options) {
-#ifndef NETDATA_NO_ATOMIC_INSTRUCTIONS
-    gs->connected_clients       = __sync_fetch_and_add(&global_statistics.connected_clients, 0);
-    gs->web_requests            = __sync_fetch_and_add(&global_statistics.web_requests, 0);
-    gs->web_usec                = __sync_fetch_and_add(&global_statistics.web_usec, 0);
-    gs->web_usec_max            = __sync_fetch_and_add(&global_statistics.web_usec_max, 0);
-    gs->bytes_received          = __sync_fetch_and_add(&global_statistics.bytes_received, 0);
-    gs->bytes_sent              = __sync_fetch_and_add(&global_statistics.bytes_sent, 0);
-    gs->content_size            = __sync_fetch_and_add(&global_statistics.content_size, 0);
-    gs->compressed_content_size = __sync_fetch_and_add(&global_statistics.compressed_content_size, 0);
-
-    if(options & GLOBAL_STATS_RESET_WEB_USEC_MAX)
-        __sync_bool_compare_and_swap(&global_statistics.web_usec_max, gs->web_usec_max, 0);
+#if defined(HAVE_C___ATOMIC) && !defined(NETDATA_NO_ATOMIC_INSTRUCTIONS)
+    gs->connected_clients       = __atomic_fetch_add(&global_statistics.connected_clients, 0, __ATOMIC_SEQ_CST);
+    gs->web_requests            = __atomic_fetch_add(&global_statistics.web_requests, 0, __ATOMIC_SEQ_CST);
+    gs->web_usec                = __atomic_fetch_add(&global_statistics.web_usec, 0, __ATOMIC_SEQ_CST);
+    gs->web_usec_max            = __atomic_fetch_add(&global_statistics.web_usec_max, 0, __ATOMIC_SEQ_CST);
+    gs->bytes_received          = __atomic_fetch_add(&global_statistics.bytes_received, 0, __ATOMIC_SEQ_CST);
+    gs->bytes_sent              = __atomic_fetch_add(&global_statistics.bytes_sent, 0, __ATOMIC_SEQ_CST);
+    gs->content_size            = __atomic_fetch_add(&global_statistics.content_size, 0, __ATOMIC_SEQ_CST);
+    gs->compressed_content_size = __atomic_fetch_add(&global_statistics.compressed_content_size, 0, __ATOMIC_SEQ_CST);
+
+    if(options & GLOBAL_STATS_RESET_WEB_USEC_MAX) {
+        uint64_t n = 0;
+        __atomic_compare_exchange(&global_statistics.web_usec_max, &gs->web_usec_max, &n, 1, __ATOMIC_SEQ_CST,
+                                  __ATOMIC_SEQ_CST);
+    }
 #else
     global_statistics_lock();
 
@@ -131,7 +131,7 @@ void global_statistics_charts(void) {
 
     if (!stcpu_thread) stcpu_thread = rrdset_find("netdata.plugin_proc_cpu");
     if (!stcpu_thread) {
-        stcpu_thread = rrdset_create("netdata", "plugin_proc_cpu", NULL, "proc.internal", NULL,
+        stcpu_thread = rrdset_create("netdata", "plugin_proc_cpu", NULL, "proc", NULL,
                                      "NetData Proc Plugin CPU usage", "milliseconds/s", 132000, rrd_update_every,
                                      RRDSET_TYPE_STACKED);
 
@@ -163,7 +163,7 @@ void global_statistics_charts(void) {
     if (!stclients) stclients = rrdset_find("netdata.clients");
     if (!stclients) {
         stclients = rrdset_create("netdata", "clients", NULL, "netdata", NULL, "NetData Web Clients",
-                                  "connected clients", 130100, rrd_update_every, RRDSET_TYPE_LINE);
+                                  "connected clients", 130200, rrd_update_every, RRDSET_TYPE_LINE);
 
         rrddim_add(stclients, "clients", NULL, 1, 1, RRDDIM_ABSOLUTE);
     } else rrdset_next(stclients);
@@ -176,7 +176,7 @@ void global_statistics_charts(void) {
     if (!streqs) streqs = rrdset_find("netdata.requests");
     if (!streqs) {
         streqs = rrdset_create("netdata", "requests", NULL, "netdata", NULL, "NetData Web Requests", "requests/s",
-                               130200, rrd_update_every, RRDSET_TYPE_LINE);
+                               130300, rrd_update_every, RRDSET_TYPE_LINE);
 
         rrddim_add(streqs, "requests", NULL, 1, 1, RRDDIM_INCREMENTAL);
     } else rrdset_next(streqs);
@@ -189,7 +189,7 @@ void global_statistics_charts(void) {
     if (!stbytes) stbytes = rrdset_find("netdata.net");
     if (!stbytes) {
         stbytes = rrdset_create("netdata", "net", NULL, "netdata", NULL, "NetData Network Traffic", "kilobits/s",
-                                130300, rrd_update_every, RRDSET_TYPE_AREA);
+                                130000, rrd_update_every, RRDSET_TYPE_AREA);
 
         rrddim_add(stbytes, "in", NULL, 8, 1024, RRDDIM_INCREMENTAL);
         rrddim_add(stbytes, "out", NULL, -8, 1024, RRDDIM_INCREMENTAL);
@@ -259,4 +259,4 @@ void global_statistics_charts(void) {
         rrddim_set(stcompression, "savings", compression_ratio);
 
     rrdset_done(stcompression);
-}
\ No newline at end of file
+}