เหตุผล kjournald สำหรับการใช้งานสูง


15

ฉันกำลังพยายามหาสาเหตุที่kjournaldจะบ้าบนเครื่องของฉัน มันคือกล่อง 8-core ที่มีหน่วยความจำมากมาย มันมีภาระซีพียูประมาณ 50%

ไอโซโทปดูเหมือนจะไม่ชี้ไปที่กระบวนการเฉพาะใด ๆ - มีการเขียนจำนวนมากที่นี่และที่นั่น (ส่วนใหญ่เริ่มต้น cron, สถิติการตรวจสอบที่สร้างขึ้น ฯลฯ ) เมื่อฉันใช้ sys/vm/block_dumpรวบรวมสถิติการเขียนฉันได้รับรายการดังนี้:

kjournald(1352): 1909
sendmail(28934): 13
cron(28910): 12
cron(28912): 11
munin-node(29015): 3
cron(28913): 3
check_asterisk_(28917): 3
sh(28917): 2
munin-node(29022): 2
munin-node(29021): 2

ที่ไหน kjournaldการกระทำเป็นเพียงเขียน

ทำไมถึงเกิดขึ้น? มีอะไรอีกที่ฉันควรพิจารณาเพื่อ จำกัด กิจกรรม kjournald เล็กน้อย? ดูเหมือนว่าไม่เหมาะสมกับสิ่งที่กำลังเขียน


คุณใช้ระบบปฏิบัติการใดอยู่ คุณสามารถโพสต์ข้อมูล uname ได้ไหม
Soham Chakraborty

ฉันมีปัญหาเดียวกันที่แน่นอน
Sharen Eayrs

คำตอบ:


15

kjournaldรับผิดชอบสำหรับเจอร์นัลของ ext3 (ระบบไฟล์การทำเจอร์นัล) เป็นที่ทราบกันดีว่าใช้ CPU จำนวนมากภายใต้การโหลดที่แน่นอน มีอะไรให้ทำมากมายยกเว้นใช้ระบบไฟล์อื่นหรือปิดการใช้งานการทำเจอร์นัล (ทำให้การ fs ext2 มีประสิทธิภาพ)

ในทางทฤษฎีคุณสามารถใช้หนึ่งในโหมดอื่นของการทำเจอร์นัล ext3 และตรวจสอบว่าการใช้งาน CPU ลดลงหรือไม่ แต่โปรดจำไว้ว่าแต่ละวิธีมีความปลอดภัยต่อข้อมูลที่เขียนลงดิสก์ คุณได้สั่งโหมดโหมด writeback และโหมด 'ทุกอย่าง'

  1. ได้รับคำสั่ง:เจอร์นัลเท่านั้นข้อมูลเมตา แต่มั่นใจว่าข้อมูลที่เกี่ยวข้องกับเมตาดาต้าจะถูกบันทึกไว้ก่อนที่จะยอมรับการเปลี่ยนแปลงข้อมูลเมตาเป็นวารสาร
  2. writeback:เจอร์นัลเท่านั้นข้อมูลเมตา แต่ไม่รับประกันว่าข้อมูลจะถูกบันทึกก่อนที่เจอร์นัลส่งมอบ
  3. วารสาร:ทุกอย่างถูกบันทึกข้อมูลและข้อมูลเมตา มันอาจจะช้า แต่ YMMV

คุณตั้งค่าโหมดโดยใช้ตัวเลือกที่เมื่อติดตั้งระบบเช่นdata=data=ordered


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

3
โหมดเจอร์นัลที่แตกต่างกันนั้นแสดงพฤติกรรมของ CPU ที่แตกต่างกัน ทดสอบบางอย่างที่นี่
coredump

1
@coredump, ยังไม่มีจุดหมาย ไม่มีกราฟแสดงการใช้งาน CPU สำหรับโหมดการบันทึกรายวันที่ต่างกันเพียงปริมาณงานเท่านั้น กราฟการใช้งาน CPU แสดงความแตกต่างระหว่าง FSes เท่านั้นจริงๆแล้ว นอกจากนี้เมื่อพิจารณาถึงความแตกต่างที่เห็นได้ชัดเจนระหว่าง EXT3 และ Reiser3 บนกราฟนั้นเห็นได้ชัดว่าการวิเคราะห์รอยเท้า CPU โดยรวมและค่าเฉลี่ยโดยที่ @viraptor มีกิจกรรม kjournald
poige

เราจะเห็นด้วยไม่เห็นด้วยแล้ว การทดสอบเฉพาะในสภาพแวดล้อมของเขาจะแสดงว่ามีความแตกต่างหรือไม่เกี่ยวกับการใช้งาน CPU นอกจากนี้ฉันจะไม่แนะนำ ReiserFS เนื่องจากรัฐบาลได้ล็อคถาวรในผู้เขียน FS :)
coredump

8
ที่นี่รับอารมณ์ขันถ้วยนี้: \
coredump

4

ตามค่าเริ่มต้นระบบไฟล์ ext3 ของคุณจะถูกเมาต์โดยเปิด atimes ทุกครั้งที่มีการอ่าน / เข้าถึงไฟล์หรือไดเรกทอรีระบบไฟล์จะต้องเขียนกลับไปที่ดิสก์เพื่ออัปเดตเร็กคอร์ด atime นี้ ซึ่งหมายความว่าแม้ว่าภาระงานของคุณส่วนใหญ่จะอ่านตามคุณยังคงต้องกดดิสก์เพื่ออัปเดตเวลาเข้าถึงของแต่ละไฟล์และไดเรกทอรีและนี่คือสิ่งที่ฉันคาดเดาว่าทำไมkjournaldกระบวนการของคุณถึงเขียนบล็อกจำนวนมาก

การปิด atime's จะให้ประสิทธิภาพที่เพิ่มขึ้นอย่างมาก แต่จะเป็นการละเมิด POSIX ลองอ่านบทความ Wikipedia นี้เพื่อการอภิปรายเกี่ยวกับคำวิจารณ์ของ atime

หากต้องการปิด atimes เพียงเพิ่มnoatimeตัวเลือกเมานท์สำหรับระบบไฟล์ของคุณหรือคุณสามารถนับใหม่ตามที่ Poige แนะนำ นี่คือตัวอย่างสำหรับระบบไฟล์รูทของคุณ:

mount -o remount,noatime /

3
โปรดทราบว่าเมล็ดเมื่อเร็ว ๆ นี้ที่จะเริ่มต้นrelatimeซึ่งดูเหมือนว่าจะเป็นที่ยอมรับการประนีประนอมระหว่างและnoatime atime
Oliver

1

ถ้าความสมบูรณ์แบบของข้อมูลไม่สำคัญ: ทำสิ่งนี้

iostat -o -a

ตรวจสอบให้แน่ใจว่ามันเป็น kjournald จริงๆ มันทำให้เซิร์ฟเวอร์ของฉันเกิดขัดข้อง

การเปลี่ยนฮาร์ดไดรฟ์เป็น SSD จะใช้งานได้

เมื่อคุณเห็น kjournald เขียนข้อมูล 5-10MB คุณ

http://ubuntuforums.org/showthread.php?t=56621

sudo tune2fs -O ^has_journal /dev/sda1
sudo e2fsck /dev/sda1

โดยที่ sda1 เป็นชื่อของพาร์ติชันของคุณ

รายงานผลลัพธ์ในความคิดเห็นเพื่อให้ฉันสามารถตรวจสอบเพิ่มเติมได้


3
คุณหมายถึง iotop ไม่ใช่ iostat ใช่มั้ย
Joe Niland

0

เพื่อไม่ให้ทำเพียงแค่พูดถึง:

  1. mount -oremount,noatime /fs/being_over/journaled- เป็นการเดาแบบรวดเร็ว (คุณไม่ได้แสดงให้เราเห็นว่าคุณmountมีหน้าตาเป็นอย่างไร)
  2. ลองลดขนาดวารสาร ( tune2fs -J …)
  3. เปลี่ยนเป็นReiser3 (ทนทานนานแล้วใช่แล้วและไม่มีการบันทึกที่น่ารังเกียจเลย)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.