Re: [uml-devel] [PATCH 2/2] Bulk IO Transaction support part 1

2015-12-21 Thread Anton Ivanov
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

[uml-devel] [PATCH 2/2] Bulk IO Transaction support part 1

2015-12-21 Thread Anton Ivanov
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

[uml-devel] [PATCH 1/2] Update UBD to use pread/pwrite family of functions

2015-12-21 Thread Anton Ivanov
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(-

Re: [uml-devel] IRQ handler reentrancy

2015-12-21 Thread Anton Ivanov
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:

[uml-devel] [PATCH 1/2] Prevent IRQ handler reentrancy

2015-12-21 Thread Anton Ivanov
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

[uml-devel] [PATCH 2/2] Optimization - do not change hard IRQ flags in soft IRQ processing

2015-12-21 Thread Anton Ivanov
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