You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by zw...@apache.org on 2010/11/05 06:40:49 UTC

svn commit: r1031441 - in /trafficserver/traffic/trunk: iocore/net/ proxy/ proxy/http2/

Author: zwoop
Date: Fri Nov  5 05:40:48 2010
New Revision: 1031441

URL: http://svn.apache.org/viewvc?rev=1031441&view=rev
Log:
TS-514 Improve code around proxy.process.net.connections_currently_open

Modified:
    trafficserver/traffic/trunk/iocore/net/P_Net.h
    trafficserver/traffic/trunk/iocore/net/P_SSLNetVConnection.h
    trafficserver/traffic/trunk/iocore/net/P_UnixNet.h
    trafficserver/traffic/trunk/iocore/net/SSLNetVConnection.cc
    trafficserver/traffic/trunk/iocore/net/UnixNetAccept.cc
    trafficserver/traffic/trunk/iocore/net/UnixNetProcessor.cc
    trafficserver/traffic/trunk/iocore/net/UnixNetVConnection.cc
    trafficserver/traffic/trunk/proxy/Main.cc
    trafficserver/traffic/trunk/proxy/http2/HttpConfig.h

Modified: trafficserver/traffic/trunk/iocore/net/P_Net.h
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/iocore/net/P_Net.h?rev=1031441&r1=1031440&r2=1031441&view=diff
==============================================================================
--- trafficserver/traffic/trunk/iocore/net/P_Net.h (original)
+++ trafficserver/traffic/trunk/iocore/net/P_Net.h Fri Nov  5 05:40:48 2010
@@ -77,6 +77,8 @@ RecIncrRawStatSum(net_rsb, mutex->thread
 #define NET_SUM_DYN_STAT(_x, _r) \
 RecIncrRawStatSum(net_rsb, mutex->thread_holding, (int)_x, _r)
 
+#define NET_READ_DYN_SUM(_x, _sum)  RecGetRawStatSum(net_rsb, (int)_x, &_sum)
+
 #define NET_READ_DYN_STAT(_x, _count, _sum) do {\
 RecGetRawStatSum(net_rsb, (int)_x, &_sum);          \
 RecGetRawStatCount(net_rsb, (int)_x, &_count);         \
@@ -88,11 +90,9 @@ do { \
 	RecSetRawStatCount(net_rsb, x, 0); \
 } while (0);
 
-#define NET_INCREMENT_THREAD_DYN_STAT(_s, _t) \
-  RecIncrRawStatSum(net_rsb, _t, (int) _s, 1);
-
-#define NET_DECREMENT_THREAD_DYN_STAT(_s, _t) \
-  RecIncrRawStatSum(net_rsb, _t, (int) _s, -1);
+// For global access
+#define NET_SUM_GLOBAL_DYN_STAT(_x, _r) RecIncrGlobalRawStatSum(net_rsb, (_x), (_r))
+#define NET_READ_GLOBAL_DYN_SUM(_x, _sum) RecGetGlobalRawStatSum(net_rsb, _x, &_sum)
 
 #include "inktomi++.h"
 #include "P_EventSystem.h"

Modified: trafficserver/traffic/trunk/iocore/net/P_SSLNetVConnection.h
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/iocore/net/P_SSLNetVConnection.h?rev=1031441&r1=1031440&r2=1031441&view=diff
==============================================================================
--- trafficserver/traffic/trunk/iocore/net/P_SSLNetVConnection.h (original)
+++ trafficserver/traffic/trunk/iocore/net/P_SSLNetVConnection.h Fri Nov  5 05:40:48 2010
@@ -137,8 +137,7 @@ extern ClassAllocator<SSLNetVConnection>
 static inline SSLNetVConnection *
 new_SSLNetVConnection(EThread * thread)
 {
-  ProxyMutex *mutex = thread->mutex;
-  NET_INCREMENT_DYN_STAT(net_connections_currently_open_stat);
+  NET_SUM_GLOBAL_DYN_STAT(net_connections_currently_open_stat, 1);
   SSLNetVConnection *vc = sslNetVCAllocator.alloc();
   vc->connect_calls = 0;
   vc->write_calls = 0;

Modified: trafficserver/traffic/trunk/iocore/net/P_UnixNet.h
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/iocore/net/P_UnixNet.h?rev=1031441&r1=1031440&r2=1031441&view=diff
==============================================================================
--- trafficserver/traffic/trunk/iocore/net/P_UnixNet.h (original)
+++ trafficserver/traffic/trunk/iocore/net/P_UnixNet.h Fri Nov  5 05:40:48 2010
@@ -287,18 +287,9 @@ net_connections_to_throttle(ThrottleType
 {
 
   double headroom = t == ACCEPT ? NET_THROTTLE_ACCEPT_HEADROOM : NET_THROTTLE_CONNECT_HEADROOM;
-  int64 sval = 0, cval = 0;
+  int64 sval = 0;
 
-#ifdef HTTP_NET_THROTTLE
-  NET_READ_DYN_STAT(http_current_client_connections_stat, cval, sval);
-  int http_user_agents = sval;
-  // one origin server connection for each user agent
-  int http_use_estimate = http_user_agents * 2;
-  // be conservative, bound by number currently open
-  if (http_use_estimate > currently_open)
-    return (int) (http_use_estimate * headroom);
-#endif
-  NET_READ_DYN_STAT(net_connections_currently_open_stat, cval, sval);
+  NET_READ_GLOBAL_DYN_SUM(net_connections_currently_open_stat, sval);
   int currently_open = (int) sval;
   // deal with race if we got to multiple net threads
   if (currently_open < 0)

Modified: trafficserver/traffic/trunk/iocore/net/SSLNetVConnection.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/iocore/net/SSLNetVConnection.cc?rev=1031441&r1=1031440&r2=1031441&view=diff
==============================================================================
--- trafficserver/traffic/trunk/iocore/net/SSLNetVConnection.cc (original)
+++ trafficserver/traffic/trunk/iocore/net/SSLNetVConnection.cc Fri Nov  5 05:40:48 2010
@@ -387,8 +387,7 @@ SSLNetVConnection::SSLNetVConnection():
 
 void
 SSLNetVConnection::free(EThread * t) {
-  ProxyMutex *mutex = t->mutex;
-  NET_DECREMENT_DYN_STAT(net_connections_currently_open_stat);
+  NET_SUM_GLOBAL_DYN_STAT(net_connections_currently_open_stat, -1);
   got_remote_addr = 0;
   got_local_addr = 0;
   read.vio.mutex.clear();

Modified: trafficserver/traffic/trunk/iocore/net/UnixNetAccept.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/iocore/net/UnixNetAccept.cc?rev=1031441&r1=1031440&r2=1031441&view=diff
==============================================================================
--- trafficserver/traffic/trunk/iocore/net/UnixNetAccept.cc (original)
+++ trafficserver/traffic/trunk/iocore/net/UnixNetAccept.cc Fri Nov  5 05:40:48 2010
@@ -96,8 +96,7 @@ net_accept(NetAccept * na, void *ep, boo
     vc = (UnixNetVConnection *) na->alloc_cache;
     if (!vc) {
       vc = na->allocateThread(e->ethread);
-      ProxyMutex *mutex = e->ethread->mutex;
-      NET_INCREMENT_DYN_STAT(net_connections_currently_open_stat);
+      NET_SUM_GLOBAL_DYN_STAT(net_connections_currently_open_stat, 1);
       vc->id = net_next_connection_number();
       na->alloc_cache = vc;
 #if TS_USE_DETAILED_LOG
@@ -347,7 +346,7 @@ NetAccept::do_blocking_accept(NetAccept 
     check_emergency_throttle(vc->con);
     master_na->alloc_cache = NULL;
 
-    RecIncrGlobalRawStatSum(net_rsb, net_connections_currently_open_stat, 1);
+    NET_SUM_GLOBAL_DYN_STAT(net_connections_currently_open_stat, 1);
     vc->submit_time = now;
     vc->ip = vc->con.sa.sin_addr.s_addr;
     vc->port = ntohs(vc->con.sa.sin_port);
@@ -495,7 +494,7 @@ NetAccept::acceptFastEvent(int event, vo
     }
     vc->con.fd = fd;
 
-    NET_INCREMENT_DYN_STAT(net_connections_currently_open_stat);
+    NET_SUM_GLOBAL_DYN_STAT(net_connections_currently_open_stat, 1);
     vc->id = net_next_connection_number();
 
     vc->submit_time = ink_get_hrtime();

Modified: trafficserver/traffic/trunk/iocore/net/UnixNetProcessor.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/iocore/net/UnixNetProcessor.cc?rev=1031441&r1=1031440&r2=1031441&view=diff
==============================================================================
--- trafficserver/traffic/trunk/iocore/net/UnixNetProcessor.cc (original)
+++ trafficserver/traffic/trunk/iocore/net/UnixNetProcessor.cc Fri Nov  5 05:40:48 2010
@@ -221,7 +221,7 @@ UnixNetProcessor::connect_re_internal(Co
     );
   SocksEntry *socksEntry = NULL;
 #endif
-  NET_INCREMENT_DYN_STAT(net_connections_currently_open_stat);
+  NET_SUM_GLOBAL_DYN_STAT(net_connections_currently_open_stat, 1);
   vc->id = net_next_connection_number();
   vc->submit_time = ink_get_hrtime();
   vc->setSSLClientConnection(true);

Modified: trafficserver/traffic/trunk/iocore/net/UnixNetVConnection.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/iocore/net/UnixNetVConnection.cc?rev=1031441&r1=1031440&r2=1031441&view=diff
==============================================================================
--- trafficserver/traffic/trunk/iocore/net/UnixNetVConnection.cc (original)
+++ trafficserver/traffic/trunk/iocore/net/UnixNetVConnection.cc Fri Nov  5 05:40:48 2010
@@ -1124,7 +1124,7 @@ UnixNetVConnection::connectUp(EThread *t
 void
 UnixNetVConnection::free(EThread *t)
 {
-  NET_DECREMENT_THREAD_DYN_STAT(net_connections_currently_open_stat, t);
+  NET_SUM_GLOBAL_DYN_STAT(net_connections_currently_open_stat, -1);
   // clear variables for reuse
   got_remote_addr = 0;
   got_local_addr = 0;

Modified: trafficserver/traffic/trunk/proxy/Main.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/Main.cc?rev=1031441&r1=1031440&r2=1031441&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/Main.cc (original)
+++ trafficserver/traffic/trunk/proxy/Main.cc Fri Nov  5 05:40:48 2010
@@ -1185,43 +1185,43 @@ struct ShowStats: public Continuation
       printf("r:rr w:ww r:rbs w:wbs open polls\n");
     ink_statval_t sval, cval;
 
-      NET_READ_DYN_STAT(net_calls_to_readfromnet_stat, sval, cval);
+    NET_READ_DYN_SUM(net_calls_to_readfromnet_stat, sval);
     int64 d_rb = sval - last_rb;
-      last_rb += d_rb;
-      NET_READ_DYN_STAT(net_calls_to_readfromnet_afterpoll_stat, sval, cval);
+    last_rb += d_rb;
+    NET_READ_DYN_SUM(net_calls_to_readfromnet_afterpoll_stat, sval);
     int64 d_r = sval - last_r;
-      last_r += d_r;
+    last_r += d_r;
 
-      NET_READ_DYN_STAT(net_calls_to_writetonet_stat, sval, cval);
+    NET_READ_DYN_SUM(net_calls_to_writetonet_stat, sval);
     int64 d_wb = sval - last_wb;
-      last_wb += d_wb;
-      NET_READ_DYN_STAT(net_calls_to_writetonet_afterpoll_stat, sval, cval);
+    last_wb += d_wb;
+    NET_READ_DYN_SUM(net_calls_to_writetonet_afterpoll_stat, sval);
     int64 d_w = sval - last_w;
-      last_w += d_w;
+    last_w += d_w;
 
-      NET_READ_DYN_STAT(net_read_bytes_stat, sval, cval);
+    NET_READ_DYN_STAT(net_read_bytes_stat, sval, cval);
     int64 d_nrb = sval - last_nrb;
-      last_nrb += d_nrb;
+    last_nrb += d_nrb;
     int64 d_nr = cval - last_nr;
-      last_nr += d_nr;
+    last_nr += d_nr;
 
-      NET_READ_DYN_STAT(net_write_bytes_stat, sval, cval);
+    NET_READ_DYN_STAT(net_write_bytes_stat, sval, cval);
     int64 d_nwb = sval - last_nwb;
-      last_nwb += d_nwb;
+    last_nwb += d_nwb;
     int64 d_nw = cval - last_nw;
-      last_nw += d_nw;
+    last_nw += d_nw;
 
-      NET_READ_DYN_STAT(net_connections_currently_open_stat, sval, cval);
-    int64 d_o = cval;
+    NET_READ_GLOBAL_DYN_SUM(net_connections_currently_open_stat, sval);
+    int64 d_o = sval;
 
-      NET_READ_DYN_STAT(net_handler_run_stat, sval, cval);
+    NET_READ_DYN_STAT(net_handler_run_stat, sval, cval);
     int64 d_p = cval - last_p;
-      last_p += d_p;
-      printf("%lld:%lld %lld:%lld %lld:%lld %lld:%lld %lld %lld\n",
-                 d_rb, d_r, d_wb, d_w, d_nrb, d_nr, d_nwb, d_nw, d_o, d_p);
+    last_p += d_p;
+    printf("%lld:%lld %lld:%lld %lld:%lld %lld:%lld %lld %lld\n",
+           d_rb, d_r, d_wb, d_w, d_nrb, d_nr, d_nwb, d_nw, d_o, d_p);
 #ifdef ENABLE_TIME_TRACE
     int i;
-      fprintf(fp, "immediate_events_time_dist\n");
+    fprintf(fp, "immediate_events_time_dist\n");
     for (i = 0; i < TIME_DIST_BUCKETS_SIZE; i++)
     {
       if ((i % 10) == 0)

Modified: trafficserver/traffic/trunk/proxy/http2/HttpConfig.h
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/http2/HttpConfig.h?rev=1031441&r1=1031440&r2=1031441&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/http2/HttpConfig.h (original)
+++ trafficserver/traffic/trunk/proxy/http2/HttpConfig.h Fri Nov  5 05:40:48 2010
@@ -351,19 +351,19 @@ enum
 extern RecRawStatBlock *http_rsb;
 
 /* Stats should only be accessed using these macros */
-#define HTTP_INCREMENT_DYN_STAT(x) RecIncrRawStat(http_rsb, mutex->thread_holding, (int) x, 1);
-#define HTTP_DECREMENT_DYN_STAT(x) RecIncrRawStat(http_rsb, mutex->thread_holding, (int) x, -1);
-#define HTTP_SUM_DYN_STAT(x, y) RecIncrRawStat(http_rsb, mutex->thread_holding, (int) x, (int) y);
-#define HTTP_SUM_GLOBAL_DYN_STAT(x, y) RecIncrGlobalRawStatSum(http_rsb,x,y)
+#define HTTP_INCREMENT_DYN_STAT(x) RecIncrRawStat(http_rsb, mutex->thread_holding, (int) x, 1)
+#define HTTP_DECREMENT_DYN_STAT(x) RecIncrRawStat(http_rsb, mutex->thread_holding, (int) x, -1)
+#define HTTP_SUM_DYN_STAT(x, y) RecIncrRawStat(http_rsb, mutex->thread_holding, (int) x, (int) y)
+#define HTTP_SUM_GLOBAL_DYN_STAT(x, y) RecIncrGlobalRawStatSum(http_rsb, x, y)
 
 #define HTTP_CLEAR_DYN_STAT(x) \
 do { \
         RecSetRawStatSum(http_rsb, x, 0); \
         RecSetRawStatCount(http_rsb, x, 0); \
-} while (0);
+ } while (0);
 
-#define HTTP_READ_DYN_SUM(x, S) RecGetRawStatSum(http_rsb, (int)x, &S); // This aggregates threads too
-#define HTTP_READ_GLOBAL_DYN_SUM(x, S) RecGetGlobalRawStatSum(http_rsb, int(x), &S)
+#define HTTP_READ_DYN_SUM(x, S) RecGetRawStatSum(http_rsb, (int)x, &S) // This aggregates threads too
+#define HTTP_READ_GLOBAL_DYN_SUM(x, S) RecGetGlobalRawStatSum(http_rsb, (int)x, &S)
 
 #define HTTP_ConfigReadInteger         REC_ConfigReadInteger
 #define HTTP_ConfigReadString          REC_ConfigReadString