Changes between Version 1 and Version 2 of jazz/12-06-02


Ignore:
Timestamp:
Jun 3, 2012, 11:27:27 AM (12 years ago)
Author:
jazz
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • jazz/12-06-02

    v1 v2  
    33== File System & Kernel Page Size ==
    44
    5  * 前陣子大家在討論怎樣加速異地檔案傳輸的速度,Thomas 提到說 mount 指令不支援大於 4096 (4K) 的問>題,也提到這個現象受限於 CPU 架構,因為 Kernel Page Size 是相依於 CPU 架構。今天簡單地查了一下,>把這個問題紀錄一下,畢竟我們常要去探討 Disk I/O 速度,從硬體架構跟軟體架構的堆疊來看,最終還是得>設法找出最佳化的參數。唯有對問題更了解,才又辦法知道如何把速度榨出來~
    6  * [參考一] [http://mkl-note.blogspot.tw/2010/11/mount-xfs-64kb-block-size-cause.html mount XFS 64KB block size cause "Function not implemented"]
     5 * 前陣子大家在討論怎樣加速異地檔案傳輸的速度,Thomas 提到說 mount 指令不支援大於 4096 (4K) 的問>題,也提到這個現象受限於 CPU 架構,因為 Kernel Page Size 是相依於 CPU 架構。今天簡單地查了一下,把這個問題紀錄一下,畢竟我們常要去探討 Disk I/O 速度,從硬體架構跟軟體架構的堆疊來看,最終還是得>設法找出最佳化的參數。唯有對問題更了解,才又辦法知道如何把速度榨出來~
     6 * 結論(1) : '''檔案系統的 Block Size (檔案區塊大小)最大值等於 Linux Kernel 的 Page Size (虛擬記憶體分頁大小)'''
     7  * [參考一] [http://mkl-note.blogspot.tw/2010/11/mount-xfs-64kb-block-size-cause.html mount XFS 64KB block size cause "Function not implemented"]
    78{{{
    89#!html
    9 <p><b>XFS: A high-performance journaling filesystem</b></p>
    10 <a href='http://oss.sgi.com/projects/xfs/'>http://oss.sgi.com/projects/xfs/</a><p/>
    11 <b>Filesystem Block Size</b><p/>
    12           <u>The minimum filesystem block size is 512 bytes. <b>The maximum filesystem block size is the page size of the kernel</b>, which is 4K on x86 architecture and is set as a kernel compile option on the IA64 architecture (up to 64 kilobyte pages).</u> So, XFS supports filesystem block sizes up to 64 kilobytes (from 512 bytes, in powers of 2), when the kernel page size allows it.
     10<p><b>XFS: A high-performance journaling filesystem</b><br/>
     11<a href='http://oss.sgi.com/projects/xfs/'>http://oss.sgi.com/projects/xfs/</a><br/>
     12<b>Filesystem Block Size</b><br/>
     13          <u>The minimum filesystem block size is 512 bytes. <b><font color='red'>The maximum filesystem block size is the page size of the kernel</font></b>, which is 4K on x86 architecture and is set as a kernel compile option on the IA64 architecture (up to 64 kilobyte pages).</u> So, XFS supports filesystem block sizes up to 64 kilobytes (from 512 bytes, in powers of 2), when the kernel page size allows it.</p>
    1314}}}
    14  * [參考二] [http://superuser.com/questions/291228/mount-ext4-partition-with-4kib-block-size Mount ext4 partition with >4KiB block size]
     15 * 結論(2) : '''支援大於 4K Page Size 的硬體架構為 ia64, mips, pa-risc, powerpc, sh, sparc64'''
     16  * [參考二] [http://superuser.com/questions/291228/mount-ext4-partition-with-4kib-block-size Mount ext4 partition with >4KiB block size]
    1517{{{
    1618#!text
     
    2830it to find an old-PPC Mac.
    2931}}}
    30  * [參考三] [
     32 * 那如何查出目前的 Kernel Page Size 呢?
     33  * [參考三] [http://www.cyberciti.biz/faq/linux-check-the-size-of-pagesize/ Linux Find Out Virtual Memory PAGESIZE]
     34{{{
     35~$ getconf PAGESIZE
     36OR
     37~$ getconf PAGE_SIZE
     38}}}
     39 * 結論(3):'''除了加大 Block Size 之外,最常用的方式是啟動 read ahead (運用快取來提昇硬碟循序讀取的效率)'''
     40  * [參考四] [http://forums.opensuse.org/forums/english/get-technical-help-here/install-boot-login/437078-changing-pagesize-kernel.html#post2152312 Changing PAGESIZE in kernel]
     41{{{
     42#!text
     43AIX vio ioo is a read ahead cache system to improve speed of transfers when doing sequential reads.
     44}}}
     45  * [參考五] [http://www.linuxpinguin.de/2011/01/performance-increase-through-bigger-readahead-buffers/ Performance increase through bigger readahead buffers] - 以下示範是把預設的 RA 由 256 提升到 1024
     46{{{
     47~$ blockdev --report
     48RO    RA   SSZ   BSZ   起始磁區            大小   裝置
     49rw   256   512  4096          0    500107862016   /dev/sda
     50rw   256   512  4096       2048    497999151104   /dev/sda1
     51rw   256   512  4096  972656640      2106589184   /dev/sda2
     52~$ sudo blockdev --setra 1024 /dev/sda1
     53}}}