2014-05-08 43 views
1

Linux OS中/ proc/net/protocols中的統計數據是什麼意思?/proc/net/protocols中的統計信息是什麼意思?

cat /proc/net/protocols 
protocol size sockets memory press maxhdr slab module  cl co di ac io in de sh ss gs se re sp bi br ha uh gp em 
PACKET  888  0  -1 NI  0 no kernel  n n n n n n n n n n n n n n n n n n n 
UNIX  752  40  -1 NI  0 yes kernel  n n n n n n n n n n n n n n n n n n n 
UDP-Lite 816  0  -1 NI  0 yes kernel  y y y n y y y n y y y y y n y y y y n 
RAW  792  0  -1 NI  0 yes kernel  y y y n y y y n y y y y n y y y y n n 
UDP  816  4  2 NI  0 yes kernel  y y y n y n y n y y y y y n y y y y n 
TCP  1656  29  1 no  272 yes kernel  y y y y y y y y y y n y n n y y y y y 
NETLINK 752  1  -1 NI  0 no kernel  n n n n n n n n n n n n n n n n n n n 
+0

aehm,什麼? ... – hek2mgl

回答

3

它有一些統計每個協議和每個協議在Linux中的總結方法。

不幸的是man 5 proc在RHEL 6.5上對/proc/net/protocols沒有任何說明。所以我看了一下來源:http://lxr.free-electrons.com/source/net/core/sock.c?v=2.6.29#L2202http://lxr.free-electrons.com/source/include/net/sock.h#L924

2169 static void proto_seq_printf(struct seq_file *seq, struct proto *proto) 
2170 { 
2171   seq_printf(seq, "%-9s %4u %6d %6d %-3s %6u %-3s %-10s " 
2172       "%2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c\n", 
2173     proto->name, 
2174     proto->obj_size, 
2175     sock_prot_inuse_get(seq_file_net(seq), proto), 
2176     proto->memory_allocated != NULL ? atomic_read(proto->memory_allocated) : -1, 
2177     proto->memory_pressure != NULL ? *proto->memory_pressure ? "yes" : "no" : "NI", 
2178     proto->max_header, 
2179     proto->slab == NULL ? "no" : "yes", 
2180     module_name(proto->owner), 
2181     proto_method_implemented(proto->close), 
2182     proto_method_implemented(proto->connect), 
2183     proto_method_implemented(proto->disconnect), 
2184     proto_method_implemented(proto->accept), 
2185     proto_method_implemented(proto->ioctl), 
2186     proto_method_implemented(proto->init), 
2187     proto_method_implemented(proto->destroy), 
2188     proto_method_implemented(proto->shutdown), 
2189     proto_method_implemented(proto->setsockopt), 
2190     proto_method_implemented(proto->getsockopt), 
2191     proto_method_implemented(proto->sendmsg), 
2192     proto_method_implemented(proto->recvmsg), 
2193     proto_method_implemented(proto->sendpage), 
2194     proto_method_implemented(proto->bind), 
2195     proto_method_implemented(proto->backlog_rcv), 
2196     proto_method_implemented(proto->hash), 
2197     proto_method_implemented(proto->unhash), 
2198     proto_method_implemented(proto->get_port), 
2199     proto_method_implemented(proto->enter_memory_pressure)); 
2200 } 

所以這是每個協議提供的關於它自己的信息。

讓我們從有很多「y」和「n」的最後部分開始。

2164 static char proto_method_implemented(const void *method) 
2165 { 
2166   return method == NULL ? 'n' : 'y'; 
2167 } 

所以它只是一個信息,如果一個特定的方法在協議中實現或沒有。例如,「cl」列用於close方法。例如由於TCP具有「y」爲「關閉」列,以便TCP協議實現接近()及其原strcut具有非空指針在「關閉」成員:

924 struct proto { 
925   void     (*close)(struct sock *sk, 
926           long timeout); 

一些在所述第一列outpit:

  1. 協議名稱
  2. 尺寸協議專用插座結構
  3. 插座 - 有多少套接字現在也有這種類型的
  4. 內存 - 當前分配的內存
  5. 按 - memory_pressure - 這是一個標誌,指示內存壓力下工作

,到目前爲止,你可以看看源自己

相關鏈接:

+0

「內存 - 當前分配內存」的單位是什麼? –

+0

我不確定100%,但是在分析core.c代碼並在'man tcp'節中讀取'tcp_mem之後:這是一個3個整數的向量:[low,pressure,high]。這些邊界(以系統頁面大小爲單位)用於TCP跟蹤其內存使用情況。「我相信這是系統頁面的數量。 –

相關問題