Gjournal reporting 1/2 the speed of non journaled? - examples

Eric Anderson anderson at freebsd.org
Sat Aug 18 05:20:33 PDT 2007


N. Harrington wrote:
> --- Eric Anderson <anderson at freebsd.org> wrote:
> 
>> N. Harrington wrote:
>>> --- Pawel Jakub Dawidek <pjd at FreeBSD.org> wrote:
>>>
>>>> On Thu, Aug 16, 2007 at 06:02:09PM -0700, N.
>>>> Harrington wrote:
>>>>>  With ZFS, I have not seen much new going on
>> with
>>>>> gjournal. I am curious what the status of
>> gjournal
>>>> and
>>>>> if it will likely be included with 6.3 (whenever
>>>> that
>>>>> is due)
>>>> That was the plan, but I'm not yet sure if I'll
>> find
>>>> time to do it.
>>>>
>>>>>  Also, as of late, I have been using it with
>>>>> 6.2-STABLE via the patches and I seem to be
>>>> getting
>>>>> 1/2 the transfer speeds compared to non
>> journaled
>>>>> disks. It seems like this is recent as previous
>>>> tests
>>>>> showed it as quite fast.
>>>>>
>>>>>  Any suggestions on why this could be happening
>>>>> greatly appreciated.
>>>>>
>>>>>  tested via 
>>>>>  dd if=/dev/zero of=./testfile bs=16 count=16384
>>>> Gjournal is ~two times faster than UFS+SU for
>> many
>>>> small, random and
>>>> parallel writes (such as running few 'tar x'
>>>> processes), but is two
>>>> times slower than UFS+SU for one sequential write
>>>> stream, as there is no
>>>> much that can be optimized there.
>>>>
>>>>>  With disks getting larger and larger, why is it
>>>>> taking so long for a journaled filesystem to be
>>>>> standard on BSD?
>>>> We have ZFS now, we don't need journaled file
>>>> system:)
>>>
>>>  Here is an example of my tests and what I am
>>> experiencing.
>>>
>>> FreeBSD server.old 6.2-PRERELEASE FreeBSD
>>> 6.2-PRERELEASE  #1: Wed Nov 22 21:20:08 PST 2006  
>>>
>>> With Gjournal:
>>> root@:/1-journal> time dd if=/dev/zero
>>> of=/1-journal/testfile1 bs=16k
>>> count=16384
>>> 16384+0 records in
>>> 16384+0 records out
>>> 268435456 bytes transferred in 10.257279 secs
>>> (26170240 bytes/sec)
>>> dd if=/dev/zero of=/cache1/testfile1 bs=16k
>>> count=16384  0.02s user 0.80s system 7% cpu 10.393
>>> total
>>>
>>> Without Gjournal:
>>> root at 1:/2-UFS> time dd if=/dev/zero
>> of=/2/testfile1
>>> bs=16k
>>>  count=16384 
>>> 16384+0 records in
>>> 16384+0 records out
>>> 268435456 bytes transferred in 26.682630 secs
>>> (10060307 bytes/sec)
>>> dd if=/dev/zero of=/home/testfile1 bs=16k
>> count=16384 
>>> 0.01s user 0.61s system 2% cpu 28.448 total
>>>
>>>  As you can see, with this test, using Gjournaling
>>> tested faster.
>>>
>>> Now on a new build:
>>>
>>> FreeBSD newtest 6.2-STABLE FreeBSD 6.2-STABLE #1:
>> Tue
>>> Aug 14 14:31:53 PDT 2007
>>> nicole at newtest:/usr/obj/spare/src/sys/GENERAL 
>> amd64
>>> Without Gjournal
>>> root at newtest:/home/nicole> time dd if=/dev/zero
>>> of=./testfile bs=16k count=16384
>>> 16384+0 records in
>>> 16384+0 records out
>>> 268435456 bytes transferred in 4.749401 secs
>> (56519854
>>> bytes/sec)
>>> dd if=/dev/zero of=./testfile bs=16k count=16384 
>>> 0.01s user 0.45s system 9% cpu 4.751 total
>>>
>>> With Gjournaling:
>>> root at newtest:/home/nicole> time dd if=/dev/zero
>>> of=/tmp/testfile bs=16k
>>> count=16384
>>> 16384+0 records in
>>> 16384+0 records out
>>> 268435456 bytes transferred in 7.505348 secs
>> (35765891
>>> bytes/sec)
>>> dd if=/dev/zero of=/tmp/testfile bs=16k
>> count=16384 
>>> 0.00s user 0.57s system 7% cpu 7.517 total
>>>
>>>  So as shown here, my test on an older 6.2 (with
>> same
>>> patches) showed improved performance. But now on a
>> new
>>> 6.2 build system, shows decreased performance.
>> Could it be that you are not writing quite enough
>> data to fully test it? 
>>   Maybe in the 'old' server case, you were stopping
>> the write *just* 
>> before the journal switch happened, so you happened
>> to see the best 
>> sequential write throughput.  The other tests could
>> happen to fall 
>> across a journal switch, which would increase the
>> time for the test, 
>> probably dropping the throughput in half.. What do
>> you think?
>>
>>
>> Eric
>>
>  Sadly I do not think my testing is in error. Since I
> am comparing them equally and on very different
> systems. They are also very repeatable. Thus I wonder
> if some changes have occurred in 6.X within the past
> months that have caused gjournal not not integrate
> well. gjournal has not changed, since the patches have
> been the same for some time.
> 
>  Also another post I had on questions was how, for me,
> with 7.0 on a scsi system, it was reporting the disk
> speed as 160Mb/s instead of 320Mb/s as it would on
> 6.X. Speed tests show the same, but on bootup, the
> speeds are not reported the same. Perhaps the result
> of some of the changes being made on 7?
> 
>  If I get a chance, and figure out how, I will try to
> scan the change log for 6.X for any changes in the
> disk  systems. I know of some changes that broke
> Pawel's patches in 2 places awhile ago. But I know
> even after those changes the speed was not effected.
> The speed decline seems recent.


Hmm.. Well, you could try the 'binary search' method, by cvs upping to a 
  specific date, try it, and see if it exists, until you know that it 
happened in a certain range of time.  Then finding the offending commit 
is *much* easier.  If you narrow it down to a day or so, and post that, 
someone on this list can help you for sure.  It's a time consuming task 
though...

Eric




More information about the freebsd-fs mailing list