Whamcloud - gitweb
branch=b1_6
authorericm <ericm>
Tue, 25 Mar 2008 06:24:10 +0000 (06:24 +0000)
committerericm <ericm>
Tue, 25 Mar 2008 06:24:10 +0000 (06:24 +0000)
ping_evictor don't evict client too eagerly just because of it's idle.
b=15192
r=nathan
r=adilger

lustre/include/obd_support.h
lustre/tests/recovery-small.sh

index ded394a..b42a71e 100644 (file)
@@ -63,8 +63,12 @@ extern unsigned int obd_alloc_fail_rate;
 #define OBD_RECOVERY_FACTOR (5 / 2) /* times obd_timeout */
 /* Change recovery-small 26b time if you change this */
 #define PING_INTERVAL max(obd_timeout / 4, 1U)
-/* Client may skip 1 ping; wait for 2.5 */
-#define PING_EVICT_TIMEOUT (PING_INTERVAL * 5 / 2)
+/* Client may skip 1 ping; we must wait at least 2.5. But for multiple
+ * failover targets the client only pings one server at a time, and pings
+ * can be lost on a loaded network. Since eviction has serious consequences,
+ * and there's no urgent need to evict a client just because it's idle, we
+ * should be very conservative here. */
+#define PING_EVICT_TIMEOUT (PING_INTERVAL * 6)
 #define DISK_TIMEOUT 50          /* Beyond this we warn about disk speed */
 #define CONNECTION_SWITCH_MIN 5U /* Connection switching rate limiter */
  /* Max connect interval for nonresponsive servers; ~50s to avoid building up
index c974ffe..6c106db 100755 (executable)
@@ -639,8 +639,8 @@ test_26b() {      # bug 10140 - evict dead exports by pinger
        # evictor takes PING_EVICT_TIMEOUT + 3 * PING_INTERVAL to evict.  
         # But if there's a race to start the evictor from various obds, 
         # the loser might have to wait for the next ping.
-       echo Waiting for $(($TIMEOUT * 8)) secs
-       sleep $(($TIMEOUT * 8))
+       echo Waiting for $(($TIMEOUT * 3)) secs
+       sleep $(($TIMEOUT * 3))
         OST_NEXP2="`do_facet ost1 lctl get_param -n $OST_FILE | cut -d' ' -f2`"
         MDS_NEXP2="`do_facet mds lctl get_param -n $MDS_FILE | cut -d' ' -f2`"
        echo ending with $OST_NEXP2 OST and $MDS_NEXP2 MDS exports