การใช้งาน Ext4 และประสิทธิภาพ


11

ฉันมีกลุ่มของเครื่องที่ใช้คาร์บอนและกราไฟต์ที่ฉันต้องปรับขนาดสำหรับการจัดเก็บข้อมูลเพิ่มเติม แต่ฉันไม่แน่ใจว่าฉันจำเป็นต้องเพิ่มหรือลดขนาด

คลัสเตอร์ปัจจุบันประกอบด้วย:

  • 1 รีเลย์โหนด: รับเมตริกทั้งหมดและส่งต่อไปยังโหนดหน่วยเก็บข้อมูลที่เกี่ยวข้อง
  • 6 โหนที่เก็บข้อมูล: เก็บไฟล์ Whisper DB ทั้งหมด

ปัญหาคือว่าดูเหมือนว่าเมื่อดิสก์ได้รับในการใช้งาน 80% ประสิทธิภาพการทำงานลดลงจากหน้าผา กลุ่มการเขียน IOPS ลดลงจาก 13k ใกล้คงเป็นค่าเฉลี่ยที่วุ่นวายมากขึ้นประมาณ 7k และ IOwait เวลาเฉลี่ย 54%

ฉันได้ดูผ่าน repo การตั้งค่าของเราและไม่มีการเปลี่ยนแปลงตั้งแต่ต้นเดือนเมษายนดังนั้นนี่ไม่ใช่ผลลัพธ์ของการเปลี่ยนแปลงการกำหนดค่า

คำถาม: การเพิ่มขนาดดิสก์จะทำให้ประสิทธิภาพของ IO กลับมาอยู่ภายใต้การควบคุมหรือฉันต้องเพิ่มโหนดหน่วยเก็บข้อมูลเพิ่มเติมหรือไม่

หมายเหตุ:ไม่มี SSD ที่นี่มีแกนหมุนเยอะมาก

กราฟที่เกี่ยวข้อง:

การใช้งานดิสก์ IOPS ซีพียู แคชคาร์บอน การวัดต่อวินาที

สถิติและสิ่งต่าง ๆ :

e2freefrag:

[root@graphite-storage-01 ~]# e2freefrag /dev/vda3
Device: /dev/vda3
Blocksize: 4096 bytes
Total blocks: 9961176
Free blocks: 4781849 (48.0%)

Min. free extent: 4 KB
Max. free extent: 81308 KB
Avg. free extent: 284 KB
Num. free extent: 19071

HISTOGRAM OF FREE EXTENT SIZES:
Extent Size Range :  Free extents   Free Blocks  Percent
    4K...    8K-  :          4008          4008    0.08%
    8K...   16K-  :          1723          3992    0.08%
   16K...   32K-  :           703          3495    0.07%
   32K...   64K-  :           637          7400    0.15%
   64K...  128K-  :          1590         29273    0.61%
  128K...  256K-  :          4711        236839    4.95%
  256K...  512K-  :          2664        265691    5.56%
  512K... 1024K-  :          2359        434427    9.08%
    1M...    2M-  :           595        213173    4.46%
    2M...    4M-  :            75         49182    1.03%
   64M...  128M-  :             6        118890    2.49%

e4defrag:

[root@graphite-storage-01 ~]# e4defrag -c /dev/vda3
<Fragmented files>                             now/best       size/ext
1. /opt/graphite/storage/graphite.db            17/1              4 KB
2. /var/log/cron                                13/1              4 KB
3. /var/log/wtmp                                16/1              4 KB
4. /root/.bash_history                           4/1              4 KB
5. /var/lib/rpm/Sha1header                      10/1              4 KB

 Total/best extents                             182256/159981
 Average size per extent                        183 KB
 Fragmentation score                            2
 [0-30 no problem: 31-55 a little bit fragmented: 56- needs defrag]
 This device (/dev/vda3) does not need defragmentation.
 Done.

iostat:

[root@graphite-storage-01 ~]# iostat -k -x 60 3
Linux 3.10.0-229.7.2.el7.x86_64 (graphite-storage-01)     07/05/2016      _x86_64_        (2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           7.99    0.00    2.54   29.66    0.35   59.46

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
vda               0.00   100.34  177.48 1808.94  2715.66  7659.19    10.45     0.26    0.13    0.65    0.08   0.23  46.14

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           6.17    0.00    7.00   73.21    0.58   13.04

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
vda               0.00    23.87  672.40  656.47  8729.87  2752.27    17.28     7.36    5.50    2.72    8.35   0.73  96.83

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           7.06    0.00    7.31   73.03    0.59   12.01

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
vda               0.00    42.68  677.67  614.88  8634.93  2647.53    17.46     6.66    5.15    2.72    7.83   0.74  96.08

df:

[root@graphite-storage-01 ~]# df
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/vda3       39153856 33689468   3822852  90% /
devtmpfs         1933092        0   1933092   0% /dev
tmpfs            1941380        0   1941380   0% /dev/shm
tmpfs            1941380   188700   1752680  10% /run
tmpfs            1941380        0   1941380   0% /sys/fs/cgroup
/dev/vda2         999320     2584    980352   1% /tmp
[root@graphite-storage-01 ~]# df -i
Filesystem      Inodes  IUsed   IFree IUse% Mounted on
/dev/vda3      2490368 239389 2250979   10% /
devtmpfs        483273    304  482969    1% /dev
tmpfs           485345      1  485344    1% /dev/shm
tmpfs           485345    322  485023    1% /run
tmpfs           485345     13  485332    1% /sys/fs/cgroup
/dev/vda2        65536     22   65514    1% /tmp

แก้ไข:ฉันปรับขนาดหนึ่งในโหนดที่เก็บข้อมูล แต่ไม่มีผล ฉันพบcachestatยูทิลิตี้นี้ใน [ https://github.com/brendangregg/perf-tools เหมือน (ชุดเครื่องมือ perf) ที่ให้ฉันดูในแคช VFS ณ จุดนี้ดูเหมือนว่าฉันได้ถึงขีด จำกัด ในปริมาณงาน IO ที่เก็บข้อมูลของฉันสามารถให้

ณ จุดนี้ฉันคิดว่าฉันจะต้องขยายขนาดต่อไปยังสมาชิกคลัสเตอร์เพิ่มเติมหรือดูเกี่ยวกับการค้นหาโซลูชันหน่วยเก็บข้อมูลอนุกรมเวลาแบบประหยัดยิ่งขึ้น

ตัวอย่างผลลัพธ์จากcachestat:

storage-01 [resized disk]
    HITS   MISSES  DIRTIES    RATIO   BUFFERS_MB   CACHE_MB
    9691    14566     7821    40.0%          160       2628
   36181    14689     7802    71.1%          160       2631
    8649    13617     7003    38.8%          159       2628
   15567    13399     6857    53.7%          160       2627
    9045    14002     7049    39.2%          160       2627
    7533    12503     6153    37.6%          159       2620

storage-02 [not resized]
    HITS   MISSES  DIRTIES    RATIO   BUFFERS_MB   CACHE_MB
    5097    11629     4740    30.5%          143       2365
    5977    11045     4843    35.1%          142       2344
    4356    10479     4199    29.4%          143       2364
    6611    11188     4946    37.1%          143       2348
   33734    14511     5930    69.9%          143       2347
    7885    16353     7090    32.5%          143       2358

การแก้ไขปลายสุด:ตั้งแต่เราย้ายไปยังแพลตฟอร์มอื่นที่มี SSD และในขณะที่สิ่งต่าง ๆ ดีในบางครั้งในที่สุดเราก็เห็นประสิทธิภาพการทำงานลดลงอย่างรวดเร็วในขณะที่เราเพิ่มการวัดมากขึ้น ในขณะที่ฉันไม่มีหลักฐานแน่ชัดฉันเชื่อว่านี่เป็นกรณีมุมระหว่างการเก็บข้อมูล Carbon / Whisper และจำนวนเมทริกที่เราจัดเก็บ

โดยทั่วไปตราบใดที่ระบบมีหน่วยความจำเพียงพอที่จะแคชไฟล์ Whisper สำหรับการอ่าน IO ได้อย่างบริสุทธิ์และเกือบทุกอย่างจะมีความสุข อย่างไรก็ตามเมื่อความอดอยากแคช FS ถูกตั้งค่าไว้และไฟล์ Whisper จำเป็นต้องอ่านอย่างต่อเนื่องในดิสก์ที่กินเข้าไปในแบนด์วิดท์ IO ของคุณและทุกอย่างจะเริ่มกระหึ่ม


การตั้งค่าฮาร์ดแวร์ประเภท OS และ SSD คืออะไร
ewwhite

@ ขาวจากบนลงล่าง: Centos7, Openstack, KVM, การปั่นสนิม เรามีกลุ่มคลาวด์เกียร์ส่วนตัวและดิสก์ของโหนดจัดเก็บข้อมูลแต่ละอันนั้นได้รับการสำรองข้อมูลโดยอาร์เรย์หน่วยเก็บข้อมูล 24 ดิสก์
Sammitch

คำตอบ:


11

ดูเหมือนว่าคุณกำลังใช้งาน SSD ซึ่งสามารถมีคุณสมบัติด้านประสิทธิภาพบางอย่างเมื่อเต็ม ความจริงที่ว่าเมื่อการใช้งานลดลงประมาณ 6/1 ประสิทธิภาพไม่ได้กลับมาเป็นปกติตอกย้ำทฤษฎีดังกล่าว

เหตุผลที่อยู่เบื้องหลังนั้นค่อนข้างซับซ้อน แต่โดยทั่วไปแล้วจำเป็นที่จะต้องลบส่วนของแฟลชที่เขียน แต่ปัจจุบันที่ไม่ได้ใช้แล้วก่อนที่จะสามารถเขียนได้อีกครั้ง ดูเหมือนว่าคุณกำลังเขียนอย่างหนักดังนั้นกระบวนการ blanking ที่ทำงานอยู่ในไดรฟ์จึงไม่มีโอกาสที่จะเก็บชิ้นส่วนที่ว่างเปล่าเพียงพอเมื่อพวกเขาถูกเขียนไปครั้งเดียว

ไดรฟ์รุ่นที่แตกต่างกันมีตัวควบคุมที่แตกต่างกันและจำนวนชิ้นส่วนแฟลช "สำรอง" ที่แตกต่างกันในการใช้งานและไดรฟ์ที่ใหญ่กว่ามีชิ้นส่วนที่เขียนได้ชัดเจนกว่าก่อนที่บิตใหม่จะหมด ปัญหาสำหรับคุณอย่างน้อยก็ชั่วคราว ไดรฟ์เกรด "Enterprise" มีแนวโน้มที่จะทำได้ดีกว่าในเรื่องนี้ แต่ทำตัวควบคุมแฟลชรุ่นใหม่กว่าดังนั้นมันจึงเป็นบิตของ crapshoot ในกรณีที่ไม่มีการทดสอบจากบุคคลที่สามที่เชื่อถือได้ของรูปแบบการใช้งานที่คล้ายคลึงกับ ของคุณเอง

นอกจากนี้คุณยังอาจจะสามารถที่จะได้รับไปกับการใช้ไดรฟ์ที่คุณมีในขณะนี้สำหรับบางเวลาถ้าคุณคลื่นสิ่งที่ชอบfstrimมากกว่าพวกเขาจะบอกไดรฟ์ "แน่นอนคุณสามารถเช็ดทุกชิ้นเหล่านี้ได้ในขณะนี้ " แม้จะทำมันในระบบ คุณต้องทำสิ่งอื่น ๆ ในเวลาเดียวกันอาจไม่ดีเท่านี้ (คุณจะต้องบันทึกคำเตือนประสิทธิภาพไว้ในfstrimmanpage ด้วย)

สำหรับว่าคุณต้องการโหนดมากขึ้นฉันไม่สามารถพูดได้อย่างแน่นอน แต่ฉันไม่คิดอย่างนั้น ซีพียูไม่ได้ควบคุมและฉันสงสัยว่าคุณจะอิ่มตัวระบบ I / O ที่อื่น


1
พวกเขาไม่ใช่ SSDs สถิติเหล่านั้นมาจากโหนดจัดเก็บข้อมูลทั้ง 6 โหนดและพวกเขากำลังทำงานอยู่ด้านบนของสนิมปั่นจำนวนมาก
Sammitch

นั่นเป็นสนิมมาก
womble

โหนดเหล่านี้กระจายอย่างเท่าเทียมกันทั่วโฮสต์คอมพิวเตอร์ของเราดังนั้นดิสก์เสมือนของพวกเขาจึงได้รับการสนับสนุนโดย RAID 24-disk 10 ฉันคิดว่าโดยรวมแล้วส่วนที่ดีกว่าของประสิทธิภาพการเขียนของไดรฟ์ 6 * 12 = 72 10k SAS .
Sammitch

3

Ext3 / 4 เป็นที่รู้กันดีว่าต้องทนทุกข์ทรมานจากจุดยืนของประสิทธิภาพ นี่เป็นเพราะการแตกแฟรกเมนต์เพิ่มขึ้นและลดประสิทธิภาพการทำงาน

คุณสามารถให้สองiostat -k -x 60 3เอาท์พุทหนึ่งเมื่อภายใต้ความจุ 80% และหนึ่งเมื่อมากกว่า 80%?

แก้ไข:จากคุณe2freefragดูเหมือนว่า/dev/vda3มีความอุดมสมบูรณ์ของพื้นที่ว่าง คุณสามารถเพิ่มผลลัพธ์ของdfและdf -i?

อย่างไรก็ตามiostatผลลัพธ์ของคุณรวมกับกราฟของคุณ (โดยเฉพาะ "Disk IOPS") นั้นค่อนข้างน่าสนใจ ดูเหมือนว่าปริมาณงานของคุณจะเขียนมาก ๆ เมื่อ> 95% ของจำนวน IOPS ที่ออกให้ทั้งหมดจะถูกเขียนคุณไม่มีปัญหา อย่างไรก็ตามเมื่อประสิทธิภาพของคุณลดลงดิสก์ของคุณจะเริ่มแสดง IOPS ที่สอดคล้องกัน การอ่าน / เขียนที่มีการผสมระหว่างนี้จะขัดขวางความสามารถของดิสก์ในการรวมการเขียนที่เล็กลงหลาย ๆ อันเข้าด้วยกันในการเขียนที่ใหญ่กว่า

ตัวอย่างเช่นให้ดูผลลัพธ์ที่หมัดแสดงโดยiostat: เมื่อดิสก์ทั้งหมด IOPS ถูกครอบงำโดยการเขียน (เช่นในกรณีนี้) ของคุณavgqu-szและawaitทั้งสองต่ำมาก

แต่ในครั้งที่สองและสามiostatเราเห็นการอ่านจำนวนมากซึ่งกำลังทำการบล็อก / การหยุดการทำงาน (ดูrrqm/sคอลัมน์: มันแสดงเป็น 0 ดังนั้นจึงไม่มีการรวมการอ่านในกรณีของคุณ) ขัดขวางทั้งเวลาแฝง ( await) และปริมาณงาน (KB / s) .

ฉันเคยเห็นพฤติกรรมที่คล้ายกันเมื่อโฮสต์หมดแคช inode อาจเกิดจากจำนวนไฟล์ขนาดเล็กที่เก็บไว้ ในการปรับแต่งระบบของคุณให้ชอบแคช inode / dentry โดยมีค่าใช้จ่ายแคชข้อมูลลองออกecho 10 > /proc/sys/vm/vfs_cache_pressureและรอสักครู่: มันเปลี่ยนอะไรไหม?


ฉันสามารถให้เฉพาะ 'เกิน 80%' iostat[เพิ่มไปที่ด้านล่างของคำถามของฉัน] เนื่องจากไม่มีโหนดการจัดเก็บอยู่ด้านล่าง ฉันมีอินสแตนซ์อื่น ๆ ที่มีการใช้งานต่ำกว่า 80% แต่ไม่มีสิ่งใดที่มีภาระงานคล้ายกันกับสิ่งเหล่านี้
Sammitch

ฉันอัพเดตคำตอบแล้ว ลองดูสิ
shodanshok

สวัสดีข่าวใด ๆ ฉันสนใจอย่างแท้จริง;)
shodanshok

ถูกดึงออกไปประชุมนอกสถานที่เมื่อวานนี้และปัญหานี้คือ backburner-ed atm ฉันจะแจ้งให้คุณทราบอย่างแน่นอนว่าจะแก้ไขได้อย่างไร
Sammitch

ข่าวใด ๆ เกี่ยวกับปัญหา?
shodanshok
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.