From a360bddee7a4ce265e7a12cd8b2a857f4b536e0a Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Sun, 8 Jul 2012 19:11:29 +0200 Subject: [PATCH] qio: raise critical queue bloat threshold from 2 to 10 times to queue limit the limit for overqueueing was too small for stuff like fcp on a fileserver connected with a standard 32K limit pipe like ramfs. fcp usesd 8K*16procs > 32K*2 the biggest queue limit used in the kernel is 256K making the maximum queue bloat 2.5MB or 320K for standard pipes. that should be big enougth to never happen in practice unless there is a bug which we like to catch before we exhaust all kernel memory. --- sys/src/9/port/qio.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/src/9/port/qio.c b/sys/src/9/port/qio.c index 8fb108511..caf09a4bd 100644 --- a/sys/src/9/port/qio.c +++ b/sys/src/9/port/qio.c @@ -1193,7 +1193,7 @@ qbwrite(Queue *q, Block *b) poperror(); return n; } - if(q->len >= q->limit*2){ + if(q->len >= q->limit*10){ iunlock(q); error(Egreg); } @@ -1241,7 +1241,7 @@ qbwrite(Queue *q, Block *b) * * Note - this is moderately dangerous since a process * that keeps getting interrupted and rewriting will - * queue infinite crud. + * queue up to 10 times the queue limit before failing. */ for(;;){ if(q->noblock || qnotfull(q))