On Tue, Nov 28, 2006 at 10:35:01AM +0200, Julian Anastasov wrote: > > Hello, > > On Tue, 28 Nov 2006, Horms wrote: > > > Dean Manners notices that when an IPVS synchonisation daemons are > > started the system load slowly climbs up to 1. This seems to be related > > to the call to ssleep(1) (aka msleep(1000) in the main loop. Replacing > > this with a call to msleep_interruptable() seems to make the problem go > > away. Though I'm not sure that it is correct. > > The same is needed for sync_backup_loop
Good point. It also seems as well to change it in fork_sync_thread() and start_sync_thread(), though these are unlikely to be causing a problem. -- Horms H: http://www.vergenet.net/~horms/ W: http://www.valinux.co.jp/en/ Dean Manners notices that when an IPVS synchonisation daemons are started the system load slowly climbs up to 1. This seems to be related to the call to ssleep(1) (aka msleep(1000) in the main loop. Replacing this with a call to msleep_interruptable() seems to make the problem go away. Though I'm not sure that it is correct. This is the second edition of this patch, which replaces ssleep() in the main loop for both the master and backup threads, as well as some thread synchronisation code. The latter is just for thorougness as it shouldn't be causing any problems. Cc: Dean Manners <[EMAIL PROTECTED]> Cc: Julian Anastasov <[EMAIL PROTECTED]> Signed-Off-By: Simon Horman <[EMAIL PROTECTED]> Index: linux-2.6/net/ipv4/ipvs/ip_vs_sync.c =================================================================== --- linux-2.6.orig/net/ipv4/ipvs/ip_vs_sync.c 2006-11-28 15:30:00.000000000 +0900 +++ linux-2.6/net/ipv4/ipvs/ip_vs_sync.c 2006-11-29 09:46:27.000000000 +0900 @@ -657,7 +657,7 @@ if (stop_master_sync) break; - ssleep(1); + msleep_interruptible(1000); } /* clean up the sync_buff queue */ @@ -714,7 +714,7 @@ if (stop_backup_sync) break; - ssleep(1); + msleep_interruptible(1000); } /* release the sending multicast socket */ @@ -826,7 +826,7 @@ if ((pid = kernel_thread(sync_thread, startup, 0)) < 0) { IP_VS_ERR("could not create sync_thread due to %d... " "retrying.\n", pid); - ssleep(1); + msleep_interruptible(1000); goto repeat; } @@ -860,7 +860,7 @@ if ((pid = kernel_thread(fork_sync_thread, &startup, 0)) < 0) { IP_VS_ERR("could not create fork_sync_thread due to %d... " "retrying.\n", pid); - ssleep(1); + msleep_interruptible(1000); goto repeat; } - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html