bookkeeper-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Flavio Junqueira <fpjunque...@yahoo.com>
Subject Re: Re: Re: hi, why write speed of bookkeeper-4.3.0 is very slow?
Date Fri, 17 Oct 2014 16:30:47 GMT
Well, I haven't though about this in a while, but the 8ms point only holds if the disk write
buffer is turned off, no? Otherwise, the disk will be able to do a better job with scheduling
the writes.

-Flavio


On Friday, October 17, 2014 4:46 PM, Ivan Kelly <ivank@apache.org> wrote:
 

>
>
>Are you running this on SSD? 2941 seems like a lot, given that for
>each write you need to fsync to disk, which takes at least 8ms.
>
>On 17 October 2014 17:42, Ivan Kelly <ivan@ivankelly.net> wrote:
>> Are you running this on SSD? 2941 seems like a lot, given that for
>> each write you need to fsync to disk, which takes at least 8ms.
>>
>> On 17 October 2014 17:28, sky_cord <sky_cord@163.com> wrote:
>>> Thanks for your help.
>>> After adding the two config items into bk_server.conf :
>>>
>>> journalFlushWhenQueueEmpty=true
>>> journalMaxGroupWaitMSec=0
>>>
>>> The write speed rise up to 800-900 entries per second in one ledger, length
>>> of each entry is 50 bytes.
>>>
>>> But it's still lower than I expected(The sync write  speed is 2941 entries/s
>>> based onbookkeepr-4.2.2).
>>>
>>> Could you describe your test result?   And Is there any way to improve write
>>> performance ?
>>>
>>> Thank you.
>>>
>>>
>>>
>>>
>>> At 2014-10-17 20:13:07, "Ivan Kelly" <ivank@apache.org> wrote:
>>>>Ah, I know what this is. Twitter added some changes that makes write
>>>>throughput much higher when there's a high write rate. In this case
>>>>the latency for a single writes goes go up though (as it's doing more
>>>>buffering on the journal). Try setting:
>>>>
>>>>journalFlushWhenQueueEmpty=true
>>>>journalMaxGroupWaitMSec=0
>>>>
>>>>in bk_server.conf
>>>>
>>>>
>>>>Also, the journal and ledger directories are on the same disk. This
>>>>will have a detrimental affect once the write buffers start flushing.
>>>>We always recommend that you put the journal on its own independent
>>>>disk.
>>>>
>>>>The reads are fast because it doesn't need to hit disk, as there's not
>>>>much data that has been written.
>>>>
>>>>-Ivan
>>>>
>>>>On 17 October 2014 13:32, sky_cord@163.com <sky_cord@163.com> wrote:
>>>>> The write speed of bookkeper that version less than 4.30 is bigger than
>>>>> 1200
>>>>> entries per second when i use the same test code
>>>>>
>>>>> ________________________________
>>>>> sky_cord@163.com
>>>>>
>>>>>
>>>>> From: Jiannan Wang
>>>>> Date: 2014-10-17 18:31
>>>>> To: sky_cord@163.com
>>>>> CC: bookkeeper-user@zookeeper.apache.org
>>>>> Subject: Re: hi, why write speed of bookkeeper-4.3.0 is very slow?
>>>>> Could you share more information:
>>>>>    - What's the number of write_num?
>>>>>    - What's the read throughput under your test?
>>>>>    - Does the 5 bookie servers run in same machine?
>>>>>    - Could you check whether StringUtil.div works well?
>>>>>    - Could you also try async write API and tell us the output?
>>>>>
>>>>> Regards,
>>>>> Jiannan
>>>>>
>>>>> From: "sky_cord@163.com" <sky_cord@163.com>
>>>>> Reply-To: "bookkeeper-user@zookeeper.apache.org"
>>>>> <bookkeeper-user@zookeeper.apache.org>
>>>>> Date: Friday, October 17, 2014 at 3:38 PM
>>>>> To: bookkeeper-user <bookkeeper-user@zookeeper.apache.org>
>>>>> Subject: hi, why write speed of bookkeeper-4.3.0 is very slow?
>>>>>
>>>>> hi,
>>>>>      I have tried bookkeeper-4.3.0 today. But its write speed is 4
>>>>> entries
>>>>> per sec in my environment.
>>>>>      There are 5 bookkeeper-server-4.3.0 in my env.
>>>>>      Is there anything wrong? Test codes as follows:
>>>>> public void syncWriteLedger(long write_num) throws InterruptedException,
>>>>> BKException {
>>>>> byte[] pwd = "foobar".getBytes();
>>>>> LedgerHandle lh = client.createLedger(3, 2,
>>>>> DigestType.MAC, pwd);
>>>>>
>>>>> long ledgerId = lh.getId();
>>>>> System.out.println("ledgerId=" + ledgerId);
>>>>> System.out
>>>>> .println("data_len="
>>>>> + ("Hello World!afdafdafdfxtyb457u8n9,7.,pbesgcerfqx" + write_num)
>>>>> .getBytes().length);
>>>>> byte[] data = ("Hello World!afdafdafdfxtyb457u8n9,7.,pbesgcerfqx" +
>>>>> write_num).getBytes();
>>>>> long st = System.currentTimeMillis();
>>>>> for (int i = 0; i < write_num; i++) {
>>>>> lh.addEntry(data);
>>>>> }
>>>>> long ut = System.currentTimeMillis() - st;
>>>>> lh.close();
>>>>> double uts = StringUtil.div(ut, 1000, 3);
>>>>> double wspeed = StringUtil.div(write_num, uts, 2);
>>>>> System.out.println("ut=" + ut + " ms, write_num=" + write_num
>>>>> + ", write speed=" + wspeed + "/s");
>>>>>
>>>>>
>>>>> LedgerHandle lh2 = client.openLedger(ledgerId, BookKeeper.DigestType.MAC,
>>>>> pwd);
>>>>> long lastEntry = lh2.getLastAddConfirmed();
>>>>> st = System.currentTimeMillis();
>>>>> Enumeration<LedgerEntry> entries = lh2.readEntries(0, lastEntry);
>>>>> while (entries.hasMoreElements()) {
>>>>> byte[] bytes = entries.nextElement().getEntry();
>>>>> System.out.println(new String(bytes));
>>>>> }
>>>>> ut = System.currentTimeMillis() - st;
>>>>> lh2.close();
>>>>> uts = StringUtil.div(ut, 1000, 3);
>>>>> double rspeed = StringUtil.div(write_num, uts, 2);
>>>>> System.out.println("ut=" + ut + " ms, read_num=" + write_num
>>>>> + ", read speed=" + rspeed + "/s");
>>>>>
>>>>> }
>>>>> ________________________________
>>>>> sky_cord@163.com
>>>
>>>
>>>
>
>
Mime
View raw message