Re: [PATCH 00/12] Save memory for stripe_head buffer

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

 





On 2020/8/20 8:25, Song Liu wrote:
On Wed, Aug 12, 2020 at 5:48 AM Yufen Yu <yuyufen@xxxxxxxxxx> wrote:

Hi, all

  In current implementation, grow_buffers() uses alloc_page() to allocate
  the buffers for each stripe_head, i.e. allocate a page for each dev[i]
  in stripe_head.

  After setting stripe_size as a configurable value by writing sysfs entry,
  it means that we always allocate 64K buffers, but just use 4K of them when
  stripe_size is 4K in 64KB arm64.

  To save memory, we try to let multiple buffers of stripe_head to share only
  one real page when page size is bigger than stripe_size. Detail can be
  seen in patch #10.

  This patch set is subsequent optimization for configurable stripe_size,
  which based on the origin patches[1] but reorganized them.

  Patch 1 ~ 2 try to replace current page offset '0' with dev[i].offset.
  Patch 3 ~ 5 let xor compute functions support different page offset for raid5.
  Patch 6 ~ 9 let syndrome and recovery function support different page offset for raid6.
  All of these patch are preparing for shared page. There is no functional change.

  Patch 10 ~ 11 actually implement shared page between multiple devices of
  stripe_head. But they only make sense for PAGE_SIZE != 4096, likely, 64KB arm64
  system. It doesn't make any difference for PAGE_SIZE == 4096 system, likely x86.

Thanks for the patches.

I went through the first half of the set, most of the code looks fine.
However, there is
one issue: the way you split the changes into 12 patches is not ideal. The most
significant issue is that build failed after 5/12 or 6/12 (and was
fixed after 9/12). We
would like every commit build successfully. I think the proper fix is
to break 9/12 and
merge changes in raid5.c to proper patches. Also, I think we can merge
1/12 and 2/12.

Please resubmit after these changes.

Thanks,
Song
.


Thanks a lot for your review. These changes can make patch set more reasonable.

Thanks,
Yufen



[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