Hi list, hi Richard,
This rather primitive patchset pushes disk IO by ~ 15%.
dd to /dev/null on a host memory cached 16G sparse disk image with
ubuntu on it goes from 512MB/s on my machine to 580MB/s.
Part 2 will be ring buffers and read/write poll loop in the io_thread as
well as elimination
This patch adds support for merging notifications on the ubd
notification file descriptor. Multiple transactions are processed
at a time resulting in 10-15% virtual disk speed improvement.
The mechanics are rather primitive - no ring buffers, primitive
guaranteed flush and guaranteed to-record-siz
This decreases the number of syscalls per read/write by half.
Signed-off-by: Anton Ivanov
---
arch/um/drivers/ubd_kern.c | 27 +--
arch/um/include/shared/os.h | 2 ++
arch/um/os-Linux/file.c | 19 +++
3 files changed, 26 insertions(+), 22 deletions(-
Patch in your queue, current code looks OK.
I will try to assemble the full ubd acceleration sequence of patches
this afternoon to submit that as well.
A.
On 11/12/15 18:38, Richard Weinberger wrote:
> Am 11.12.2015 um 12:24 schrieb Anton Ivanov:
>> On 11/12/15 08:16, Richard Weinberger wrote:
The existing IRQ handler design in UML does not prevent reentrancy
This is mitigated by fd-enable/fd-disable semantics for the IO
portion of the UML subsystem. The timer, however, can and is
re-entered resulting in very deep stack usage and occasional
stack exhaustion.
This patch prevents this by
Software IRQ processing in generic architectures assumes that the
exit out of hard IRQ may have re-enabled interrupts (some
architectures may have an implicit EOI). It presumes them enabled
and toggles the flags once more just in case unless this is turned
off in the architecture specific hardirq.h