Re: [PATCH] net: Convert TCP/DCCP listening hash tables to use RCU
From: Paul E. McKenney <hidden>
Date: 2008-11-23 22:33:03
On Sun, Nov 23, 2008 at 09:18:17PM +0100, Eric Dumazet wrote:
Paul E. McKenney a écrit :quoted
On Sun, Nov 23, 2008 at 07:42:14PM +0100, Eric Dumazet wrote:quoted
Paul E. McKenney a écrit :quoted
On Sun, Nov 23, 2008 at 10:33:28AM +0100, Eric Dumazet wrote:quoted
Hi David Please find patch to convert TCP/DCCP listening hash tables to RCU. A followup patch will cleanup all sk_node fields and macros that are not used anymore. Thanks [PATCH] net: Convert TCP/DCCP listening hash tables to use RCU This is the last step to be able to perform full RCU lookups in __inet_lookup() : After established/timewait tables, we add RCU lookups to listening hash table. The only trick here is that a socket of a given type (TCP ipv4, TCP ipv6, ...) can now flight between two different tables (established and listening) during a RCU grace period, so we must use different 'nulls' end-of-chain values for two tables. We define a large value : #define LISTENING_NULLS_BASE (1U << 29)I do like this use of the full set up upper bits! However, wouldn't it be a good idea to use a larger base value for 64-bit systems, perhaps using CONFIG_64BIT to choose? 500M entries might not seem like that many in a few years time...Well, this value is correct up to 2^29 slots, and a hash table of 2^32 bytes (8 bytes per pointer) A TCP socket uses about 1472 bytes on 64bit arches, so 2^29 sessions would need 800 GB of ram, not counting dentries, inodes, ... I really doubt a machine, even with 4096 cpus should/can handle so many tcp sessions :)200MB per CPU, right? But yes, now that you mention it, 800GB of memory dedicated to TCP connections sounds almost as ridiculous as did 640K of memory in the late 1970s. ;-);)quoted
Nevertheless, I don't have an overwhelming objection to the current code. Easy enough to change should it become a problem, right?Sure. By that time, cpus might be 128 bits or 256 bits anyway :)
Or even 640K bits. ;-) Thanx, Paul