From: Sage Weil Date: Thu, 20 Aug 2015 19:09:17 +0000 (-0400) Subject: Merge pull request #5259 from branch-predictor/bp-tuned-bufferlists X-Git-Tag: v9.1.0~333 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=779466e34df1d8bcc8ec4990e5497e4e398d3402;p=ceph.git Merge pull request #5259 from branch-predictor/bp-tuned-bufferlists Bufferlist tuning Reviewed-by: Sage Weil Reviewed-by: Haomai Wang Reviewed-by: Samuel Just --- 779466e34df1d8bcc8ec4990e5497e4e398d3402 diff --cc src/common/buffer.cc index 06537f5eca1e,5eccdfe05498..f2148fdcdb50 --- a/src/common/buffer.cc +++ b/src/common/buffer.cc @@@ -1369,32 -1528,32 +1528,31 @@@ void buffer::list::rebuild_page_aligned unsigned gap = append_buffer.unused_tail_length(); if (!gap) { // make a new append_buffer! - unsigned alen = CEPH_PAGE_SIZE; - append_buffer = create_page_aligned(alen); + append_buffer = create_aligned(CEPH_BUFFER_APPEND_SIZE, CEPH_BUFFER_APPEND_SIZE); append_buffer.set_length(0); // unused, so far. } - append_buffer.append(c); - append(append_buffer, append_buffer.end() - 1, 1); // add segment to the list + append(append_buffer, append_buffer.append(c) - 1, 1); // add segment to the list } - + void buffer::list::append(const char *data, unsigned len) { while (len > 0) { // put what we can into the existing append_buffer. unsigned gap = append_buffer.unused_tail_length(); if (gap > 0) { - if (gap > len) gap = len; - //cout << "append first char is " << data[0] << ", last char is " << data[len-1] << std::endl; - append_buffer.append(data, gap); - append(append_buffer, append_buffer.end() - gap, gap); // add segment to the list - len -= gap; - data += gap; + if (gap > len) gap = len; + //cout << "append first char is " << data[0] << ", last char is " << data[len-1] << std::endl; + append_buffer.append(data, gap); + append(append_buffer, append_buffer.end() - gap, gap); // add segment to the list + len -= gap; + data += gap; } if (len == 0) - break; // done! + break; // done! // make a new append_buffer! - unsigned alen = CEPH_PAGE_SIZE * (((len-1) / CEPH_PAGE_SIZE) + 1); - append_buffer = create_page_aligned(alen); + unsigned alen = CEPH_BUFFER_APPEND_SIZE * (((len-1) / CEPH_BUFFER_APPEND_SIZE) + 1); + append_buffer = create_aligned(alen, CEPH_BUFFER_APPEND_SIZE); append_buffer.set_length(0); // unused, so far. } }