|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] OOM problems
Daniel, thank you for the help and in-depth information, as well as the test code off-list. The corruption problem with blktap2 O_DIRECT is easily reproducible for me on multiple machines, so I hope that we'll be able to nail this one down pretty quickly. To follow up on my question about the potential performance difference between blktap2 without O_DIRECT and loop (both of which use the page cache), I did some tests inside a sparse file-backed domU by timing copying a folder containing 7419 files and folders totalling 1.6 GB (of mixed sizes), and found that loop returned this: real 1m18.257s user 0m0.050s sys 0m6.550s While tapdisk2 aio w/o O_DIRECT clocked in at: real 0m55.373s user 0m0.050s sys 0m6.690sWith each, I saw a few more seconds of disk activity on dom0, since dirty_ratio was set to 2. I ran the tests several times and dropped caches on dom0 between each one; all of the results were within a second or two of each other. This represents a significant ~41% performance bump for that particular workload. In light of this, I would recommend to anyone who is using "file:" that they try out tapdisk2 aio with a modified block-aio.c to remove O_DIRECT, and see how it goes. If you find results similar to mine, it might be worth modifying this into another blktap2 driver. -John On 11/18/2010 2:41 AM, Daniel Stodden wrote: On Thu, 2010-11-18 at 02:15 -0500, John Weekes wrote:I think [XCP blktap] should work fine, or wouldn't ask. If not, lemme know.k.In my last bit of troubleshooting, I took O_DIRECT out of the open call in tools/blktap2/drivers/block-aio.c, and preliminary testing indicates that this might have eliminated the problem with corruption. I'm testing further now, but could there be an issue with alignment (since the kernel is apparently very strict about it with direct I/O)?Nope. It is, but they're 4k-aligned all over the place. You'd see syslog yelling quite miserably in cases like that. Keeping an eye on syslog (the daemon and kern facilites) is a generally good idea btw.I've been doing that and haven't seen any unusual output so far, which I guess is good.(Removing this flag also brings back in use of the page cache, of course.)I/O-wise it's not much different from the file:-path. Meaning it should have carried you directly back into the Oom realm.Does it make a difference that it's not using "loop" and instead the CPU usage (and presumably some blocking) occurs in user-space?It's certainly a different path taken. I just meant to say file access has about the same properties, so you're likely back to the original issue.There's not too much information on this out there, but it seems at though the OOM issue might be at least somewhat loop device-specific. One document that references loop OOM problems that I found is this one: http://sources.redhat.com/lvm2/wiki/DMLoop. My initial take on it was that it might be saying that it mattered when these things were being done in the kernel, but now I'm not so certain -- ".. [their method and loop] submit[s] [I/O requests] via a kernel thread to the VFS layer using traditional I/O calls (read, write etc.). This has the advantage that it should work with any file system type supported by the Linux VFS (including networked file systems), but has some drawbacks that may affect performance and scalability. This is because it is hard to predict what a file system may attempt to do when an I/O request is submitted; for example, it may need to allocate memory to handle the request and the loopback driver has no control over this. Particularly under low-memory or intensive I/O scenarios this can lead to out of memory (OOM) problems or deadlocks as the kernel tries to make memory available to the VFS layer while satisfying a request from the block layer. " Would there be an advantage to using blktap/blktap2 over loop, if I leave off O_DIRECT? Would it be faster, or anything like that? _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |