This is the mail archive of the
systemtap@sourceware.org
mailing list for the systemtap project.
Re: [Qemu-devel] [RFC PATCH 1/2] ivring: Add a ring-buffer driver on IVShmem
- From: Masami Hiramatsu <masami dot hiramatsu dot pt at hitachi dot com>
- To: Greg Kroah-Hartman <gregkh at linuxfoundation dot org>
- Cc: Anthony Liguori <anthony at codemonkey dot ws>, Borislav Petkov <bp at amd64 dot org>, Yoshihiro YUNOMAE <yoshihiro dot yunomae dot ez at hitachi dot com>, Ohad Ben-Cohen <ohad at wizery dot com>, Grant Likely <grant dot likely at secretlab dot ca>, qemu-devel at nongnu dot org, Linus Walleij <linus dot walleij at linaro dot org>, Rusty Russell <rusty at rustcorp dot com dot au>, linux-kernel at vger dot kernel dot org, Borislav Petkov <borislav dot petkov at amd dot com>, Arnaldo Carvalho de Melo <acme at redhat dot com>, MyungJoo Ham <myungjoo dot ham at samsung dot com>, systemtap at sourceware dot org, Joerg Roedel <joerg dot roedel at amd dot com>, yrl dot pp-manager dot tt at hitachi dot com, Cam Macdonell <cam at cs dot ualberta dot ca>, Akihiro Nagai <akihiro dot nagai dot hw at hitachi dot com>
- Date: Wed, 06 Jun 2012 23:44:28 +0900
- Subject: Re: [Qemu-devel] [RFC PATCH 1/2] ivring: Add a ring-buffer driver on IVShmem
- References: <20120605104954.15442.62695.stgit@ltc189.sdl.hitachi.co.jp> <20120605130117.15479.32680.stgit@ltc189.sdl.hitachi.co.jp> <20120605131031.GF13495@aftab.osrc.amd.com> <4FCE902A.3060603@codemonkey.ws> <20120605232210.GA8858@kroah.com>
(2012/06/06 8:22), Greg Kroah-Hartman wrote:
> On Wed, Jun 06, 2012 at 07:03:06AM +0800, Anthony Liguori wrote:
>> On 06/05/2012 09:10 PM, Borislav Petkov wrote:
>>> On Tue, Jun 05, 2012 at 10:01:17PM +0900, Yoshihiro YUNOMAE wrote:
>>>> This patch adds a ring-buffer driver for IVShmem device, a virtual RAM device in
>>>> QEMU. This driver can be used as a ring-buffer for kernel logging or tracing of
>>>> a guest OS by recording kernel programing or SystemTap.
>>>>
>>>> This ring-buffer driver is implemented very simple. First 4kB of shared memory
>>>> region is control structure of a ring-buffer. In this region, some values for
>>>> managing the ring-buffer is stored such as bits and mask of whole memory size,
>>>> writing position, threshold value for notification to a reader on a host OS.
>>>> This region is used by the reader to know writing position. Then, "total
>>>> memory size - 4kB" equals to usable memory region for recording data.
>>>> This ring-buffer driver records any data from start to end of the writable
>>>> memory region.
>>>>
>>>> When writing size exceeds a threshold value, this driver can notify a reader
>>>> to read data by using writel(). As this later patch, reader does not have any
>>>> function for receiving the notification. This notification feature will be used
>>>> near the future.
>>>>
>>>> As a writer records data in this ring-buffer, spinlock function is used to
>>>> avoid competing by some writers in multi CPU environment. Not to use spinlock,
>>>> lockless ring-buffer like as ftrace and one ring-buffer one CPU will be
>>>> implemented near the future.
>>>
>>> Yet another ring buffer?
>>>
>>> We already have an ftrace and perf ring buffer, can't you use one of those?
>>
>> Not to mention virtio :-)
>>
>> Why not just make a virtio device for this kind of thing?
>
> Yeah, that's exactly what I was thinking, why reinvent things again?
Agreed. Actually, we think this is just a concept prototype.
Because of many restrictions of this device, especially for
scalability (which Yoshihiro will give a talk in LinuxCon Japan),
we are considering to move onto a virtio-based shmem device.
Afaics, it seems possible to use it virtio-ballon like way to pass
actual pages of the guest ring buffer to host. Then the reader
can read the pages directly from qemu.
Thank you,
--
Masami HIRAMATSU
Software Platform Research Dept. Linux Technology Center
Hitachi, Ltd., Yokohama Research Laboratory
E-mail: masami.hiramatsu.pt@hitachi.com