On Tue, 22 Feb 2000, Andrea Arcangeli wrote:
> BTW, I just found another lowlatency patch bug:
>
> -
> + /*
> + * Tough one to time-limit ...
> + */
> entry = entry->next;
> - if (!CAN_UNUSE(INODE(tmp)))
> + if (!CAN_UNUSE(INODE(tmp))) {
> + if (current->need_resched) {
> + INODE(tmp)->i_count++;
> + spin_unlock(&inode_lock);
> + schedule();
> + spin_lock(&inode_lock);
> + INODE(tmp)->i_count--;
> + }
> continue;
> + }
>
>
> i_count-- won't release the inode correctly (think if the inode got
> deleted under the schedule).
>
> Drop the above changes and try again.
>
> Andrea
But what happens if you free zillions of inodes in this loop without
rescheduling ?
You will spend several msecs in this loop ruining latencies completely.
Is there a way to reschedule in a safe way during the freeing of inodes ?
Without time-limiting these routines we have no chance to achieve
low latencies.
As you can see from my tests stock kernels freeze up to 130ms
during heavy disk I/O on a PII400 + 256MB RAM machine.
Benno.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/
This archive was generated by hypermail 2b29 : Wed Feb 23 2000 - 21:00:31 EST