Hi Marc, Well, if you are striping over multiple devices the you I/O should be spread over the devices and you should be reading them all simultaneously rather than just accessing a single device. Traditional striping would give 1/n performance improvement rather than 1/1 where n is the number of disks the stripe is spread across.
The round-robin access I am referring to, is the way the L2ARC vdevs appear to be accessed. So, any given object will be taken from a single device rather than from several devices simultaneously, thereby increasing the I/O throughput. So, theoretically, a stripe spread over 4 disks would give 4 times the performance as opposed to reading from a single disk. This also assumes the controller can handle multiple I/O as well or that you are striped over different disk controllers for each disk in the stripe. SSD's are fast, but if I can read a block from more devices simultaneously, it will cut the latency of the overall read. On 7 May 2010, at 02:57 , Marc Nicholas wrote: > Hi Michael, > > What makes you think striping the SSDs would be faster than round-robin? > > -marc > > On Thu, May 6, 2010 at 1:09 PM, Michael Sullivan <michael.p.sulli...@mac.com> > wrote: > Everyone, > > Thanks for the help. I really appreciate it. > > Well, I actually walked through the source code with an associate today and > we found out how things work by looking at the code. > > It appears that L2ARC is just assigned in round-robin fashion. If a device > goes offline, then it goes to the next and marks that one as offline. The > failure to retrieve the requested object is treated like a cache miss and > everything goes along its merry way, as far as we can tell. > > I would have hoped it to be different in some way. Like if the L2ARC was > striped for performance reasons, that would be really cool and using that > device as an extension of the VM model it is modeled after. Which would mean > using the L2ARC as an extension of the virtual address space and striping it > to make it more efficient. Way cool. If it took out the bad device and > reconfigured the stripe device, that would be even way cooler. Replacing it > with a hot spare more cool too. However, it appears from the source code > that the L2ARC is just a (sort of) jumbled collection of ZFS objects. Yes, > it gives you better performance if you have it, but it doesn't really use it > in a way you might expect something as cool as ZFS does. > > I understand why it is read only, and it invalidates it's cache when a write > occurs, to be expected for any object written. > > If an object is not there because of a failure or because it has been removed > from the cache, it is treated as a cache miss, all well and good - go fetch > from the pool. > > I also understand why the ZIL is important and that it should be mirrored if > it is to be on a separate device. Though I'm wondering how it is handled > internally when there is a failure of one of it's default devices, but then > again, it's on a regular pool and should be redundant enough, only just some > degradation in speed. > > Breaking these devices out from their default locations is great for > performance, and I understand. I just wish the knowledge of how they work > and their internal mechanisms were not so much of a black box. Maybe that is > due to the speed at which ZFS is progressing and the features it adds with > each subsequent release. > > Overall, I am very impressed with ZFS, its flexibility and even more so, it's > breaking all the rules about how storage should be managed and I really like > it. I have yet to see anything to come close in its approach to disk data > management. Let's just hope it keeps moving forward, it is truly a unique > way to view disk storage. > > Anyway, sorry for the ramble, but to everyone, thanks again for the answers. > > Mike > > --- > Michael Sullivan > michael.p.sulli...@me.com > http://www.kamiogi.net/ > Japan Mobile: +81-80-3202-2599 > US Phone: +1-561-283-2034 > > On 7 May 2010, at 00:00 , Robert Milkowski wrote: > > > On 06/05/2010 15:31, Tomas Ögren wrote: > >> On 06 May, 2010 - Bob Friesenhahn sent me these 0,6K bytes: > >> > >> > >>> On Wed, 5 May 2010, Edward Ned Harvey wrote: > >>> > >>>> In the L2ARC (cache) there is no ability to mirror, because cache device > >>>> removal has always been supported. You can't mirror a cache device, > >>>> because > >>>> you don't need it. > >>>> > >>> How do you know that I don't need it? The ability seems useful to me. > >>> > >> The gain is quite minimal.. If the first device fails (which doesn't > >> happen too often I hope), then it will be read from the normal pool once > >> and then stored in ARC/L2ARC again. It just behaves like a cache miss > >> for that specific block... If this happens often enough to become a > >> performance problem, then you should throw away that L2ARC device > >> because it's broken beyond usability. > >> > >> > > > > Well if a L2ARC device fails there might be an unacceptable drop in > > delivered performance. > > If it were mirrored than a drop usually would be much smaller or there > > could be no drop if a mirror had an option to read only from one side. > > > > Being able to mirror L2ARC might especially be useful once a persistent > > L2ARC is implemented as after a node restart or a resource failover in a > > cluster L2ARC will be kept warm. Then the only thing which might affect L2 > > performance considerably would be a L2ARC device failure... > > > >
_______________________________________________ zfs-discuss mailing list zfs-discuss@opensolaris.org http://mail.opensolaris.org/mailman/listinfo/zfs-discuss