Re: Unbelievably _good_ write performance: RHEL5.4 mirror

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, November 4, 2009 11:41 am, Michael Evans wrote:
> On Tue, Nov 3, 2009 at 4:37 PM, Chris Worley <worleys@xxxxxxxxx> wrote:
>> On Tue, Nov 3, 2009 at 5:29 PM, Michael Evans <mjevans1983@xxxxxxxxx>
>> wrote:
>>>>
>>>> So, you're saying that the MD layer is doing it's own buffering?  Are
>>>> you sure?  With the system cache disabled and the drive (and block
>>>> device driver) cache disabled, there should be no reason to require
>>>> synchronous I/O, unless, as you suggest, the MD layer is broken.

MD only does buffering for RAID4/5/6, and then normally only for writes.
It has to buffer writes so that it can create the XOR reliably.

>>>>
>>>> You're saying that both O_DIRECT and O_SYNC must be used to disable
>>>> cache effects. Why then are there two separate flags and not just one?
>>>>  Synchronous is a very different behavior that is not necessary for
>>>> this test and put additional requirements that are not needed for this

Without O_SYNC, the filesystem metadata which records where the blocks
in the file are may be not be updated synchronously.  This is probably
what you want when testing device throughput.
So just using O_DIRECT is correct.


>>>> test.
>>>>
>>>> Chris
>>>>
>>>
>>> Reading the manual page it seems O_DIRECT explicitly minimizes any
>>> attempts at extra copying; not explicitly disabling buffers, merely
>>> not adding more.  In another mail thread this tweak-able was
>>> discussed:
>>>
>>> echo 0 > /sys/block/md*/md/stripe_cache_size
>>>
>>> Which would should (I think) disable any cache involved with the md
>>> layer.

And given that the cache - where available - is essential, this would
effectively stop your md array.... except that numbers less than 16 are
rejected.


>>
>> Stripe_cache_size doesn't seem to exist in the /sys/block/md*/md/
>> directory on the RHEL5.3 2.6.18-92 kernel I'm using.
>>
>> # ls /sys/block/md*/md/s*
>> /sys/block/md0/md/safe_mode_delay  /sys/block/md0/md/suspend_hi
>> /sys/block/md0/md/suspend_lo  /sys/block/md0/md/sync_action
>> /sys/block/md0/md/sync_completed  /sys/block/md0/md/sync_speed
>> /sys/block/md0/md/sync_speed_max  /sys/block/md0/md/sync_speed_min

RAID1 does not have a stripe cache, hence no 'stripe_cache_size'.

As to why RAID1 appears fast than the plain drive, I cannot imagine.
I would need specific details of exactly the tests that were run,
exactly the results obtained, and exactly the version of the
various software used.

NeilBrown

--
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux RAID Wiki]     [ATA RAID]     [Linux SCSI Target Infrastructure]     [Linux Block]     [Linux IDE]     [Linux SCSI]     [Linux Hams]     [Device Mapper]     [Device Mapper Cryptographics]     [Kernel]     [Linux Admin]     [Linux Net]     [GFS]     [RPM]     [git]     [Yosemite Forum]


  Powered by Linux