คำถามติดแท็ก performance

ความเร็วที่โปรแกรมทำงาน

1
คุณจะลบบัฟเฟอร์และแคชในระบบ Linux ได้อย่างไร
ก่อนที่จะทำการเปรียบเทียบการทำงานจะมีวิธีเพิ่มหน่วยความจำ (RAM) ที่เคอร์เนล Linux ใช้ไปสำหรับบัฟเฟอร์และแคชหรือไม่ โปรดทราบว่านี่เป็นประโยชน์อย่างมากสำหรับการเปรียบเทียบ การลบบัฟเฟอร์และแคชช่วยลดประสิทธิภาพ! หากคุณมาที่นี่เพราะคุณคิดว่าการปล่อยบัฟเฟอร์และแคชเป็นสิ่งที่ดีลองอ่านLinux กิน RAM ของฉัน! . เรื่องสั้น: หน่วยความจำฟรีเป็นหน่วยความจำที่ไม่ได้ใช้จะสูญเสียหน่วยความจำ
315 linux  kernel  performance  cache  ram 

8
ทำไมต้องใช้ swap เมื่อมีพื้นที่ว่างใน RAM มากกว่าเพียงพอ
การใช้พื้นที่สว็อปแทน RAM อาจทำให้พีซีทำงานช้าลงอย่างมาก ดังนั้นทำไมเมื่อฉันมี RAM มากกว่าพอระบบ Linux (Arch) ของฉันจึงใช้ swap หรือไม่ ชำระเงินผลลัพธ์ของฉันด้านล่าง: และนี่อาจเป็นสาเหตุของปัญหาความเร็วและการตอบสนองของระบบที่ฉันมี ผลลัพธ์ของfree -m: $ free -m total used free shared buffers cached Mem: 1257 1004 252 0 51 778 -/+ buffers/cache: 174 1082 Swap: 502 144 357
124 performance  swap 

6
ฉันสามารถกำหนดค่าระบบ Linux สำหรับการแคชระบบไฟล์ที่เข้มงวดยิ่งขึ้นได้หรือไม่?
ฉันไม่กังวลเกี่ยวกับการใช้ RAM (เท่าที่ฉันมีเพียงพอ) หรือเกี่ยวกับการสูญเสียข้อมูลในกรณีที่มีการปิดเครื่องโดยไม่ตั้งใจ (เนื่องจากพลังงานของฉันได้รับการสนับสนุนระบบมีความน่าเชื่อถือและข้อมูลไม่สำคัญ) แต่ฉันทำการประมวลผลไฟล์จำนวนมากและสามารถใช้การเพิ่มประสิทธิภาพบางอย่างได้ นั่นเป็นเหตุผลที่ฉันต้องการตั้งค่าระบบให้ใช้ RAM เพิ่มเติมสำหรับระบบไฟล์อ่านและเขียนแคชเพื่อดึงไฟล์อย่างจริงจัง (เช่นอ่านล่วงหน้าทั้งไฟล์ที่เข้าถึงโดยแอปพลิเคชันในกรณีที่ไฟล์มีขนาดสติหรืออย่างน้อย อ่านล่วงหน้าก้อนใหญ่ของมันเป็นอย่างอื่น) และเพื่อล้างบัฟเฟอร์การเขียนน้อยลง ทำอย่างไรจึงจะบรรลุผล (อาจเป็นไปได้) ฉันใช้ระบบไฟล์ ext3 และ ntfs (ฉันใช้ ntfs มาก!) กับ XUbuntu 11.10 x86

5
มีวิธีในการกำหนดค่าที่เหมาะสมที่สุดสำหรับพารามิเตอร์ bs เป็น dd หรือไม่?
ในบางครั้งฉันเห็นความคิดเห็นออนไลน์ตามบรรทัดของ "ให้แน่ใจว่าคุณตั้งค่า 'bs =' เพราะค่าเริ่มต้นจะใช้เวลานานเกินไป" และประสบการณ์ที่ไม่มีหลักวิทยาศาสตร์ของฉันเอง "ซึ่งดูเหมือนจะใช้เวลานานกว่าที่อื่น เวลาเมื่อสัปดาห์ที่แล้ว "ดูเหมือนจะทนได้ ดังนั้นเมื่อใดก็ตามที่ฉันใช้ 'dd' (โดยทั่วไปจะอยู่ในช่วง 1-2GB) ฉันแน่ใจว่าได้ระบุพารามิเตอร์ bytes ประมาณครึ่งหนึ่งที่ฉันใช้ค่าที่ระบุในคู่มือออนไลน์ที่ฉันกำลังคัดลอกมา เวลาที่เหลือฉันจะเลือกหมายเลขที่เหมาะสมจากรายการ 'fdisk -l' สำหรับสิ่งที่ฉันถือว่าเป็นสื่อที่ช้ากว่า (เช่นการ์ด SD ที่ฉันเขียน) สำหรับสถานการณ์ที่กำหนด (ประเภทสื่อขนาดบัสหรืออะไรก็ตามที่สำคัญ) มีวิธีการกำหนดค่า "ดีที่สุด" หรือไม่? มันง่ายที่จะกำหนด? ถ้าไม่มีวิธีง่ายๆในการรับ 90-95% จากที่นั่นหรือไม่? หรือ "เพียงแค่เลือกสิ่งที่ใหญ่กว่า 512" แม้แต่คำตอบที่ถูกต้องหรือไม่ ฉันคิดว่าจะลองทำการทดสอบด้วยตัวเอง แต่ (นอกเหนือจากการทำงานมาก ๆ ) ฉันไม่แน่ใจว่าปัจจัยใดที่ส่งผลกระทบต่อคำตอบดังนั้นฉันจึงไม่รู้วิธีออกแบบการทดสอบที่ดี

1
ไดอะแกรมของ Linux kernel เทียบกับเครื่องมือประสิทธิภาพหรือไม่
มีแผนภาพที่แสดงให้เห็นว่าประสิทธิภาพของเครื่องมือต่างๆเช่นip, netstat, perf, top, psฯลฯ โต้ตอบกับระบบย่อยต่างๆภายในเคอร์เนลลินุกซ์?

4
เส้นประหรือเปลือกอื่น ๆ “ เร็วขึ้น” กว่าทุบตีหรือไม่
ฉันคิดเสมอว่าประโยชน์เพียงอย่างเดียวของการใช้เครื่องหมายขีดคั่นแทนการทุบตีก็คือเส้นประนั้นเล็กลงและดังนั้นกรณีของเส้นประจะเริ่มเร็วขึ้นในเวลาบูต แต่ฉันได้ทำการวิจัยมาแล้วและพบว่ามีคนบางคนย้ายสคริปต์ทั้งหมดของพวกเขาไปที่หวังว่าพวกเขาจะทำงานได้เร็วขึ้นและฉันก็พบสิ่งนี้ในบทความDashAsBinShใน Ubuntu Wiki: เหตุผลสำคัญที่จะเปลี่ยนเปลือกเริ่มต้นได้อย่างมีประสิทธิภาพ bash เป็นกระสุนเต็มรูปแบบที่ยอดเยี่ยมเหมาะสำหรับการใช้แบบโต้ตอบ; แท้จริงมันยังคงเป็นเปลือกเข้าสู่ระบบเริ่มต้น อย่างไรก็ตามมันค่อนข้างใหญ่และช้าในการเริ่มต้นและใช้งานโดยเปรียบเทียบกับเส้นประ ทุกวันนี้ฉันใช้สคริปต์ทุบตีมากมายหลายอย่างในระบบของฉันและปัญหาของฉันคือฉันมีสคริปต์เฉพาะที่ฉันทำงานอย่างต่อเนื่อง 24/7 ที่วางไข่เด็กประมาณ 200 คนซึ่งคอมพิวเตอร์ของฉันร้อนขึ้น 10 ° C มากกว่าการใช้งานปกติ มันเป็นสคริปต์ที่ค่อนข้างใหญ่ที่มี bashisms จำนวนมากดังนั้นการย้ายไปที่ POSIX หรือเชลล์อื่น ๆ ใช้เวลานานมาก (และ POSIX ไม่สำคัญสำหรับการใช้งานส่วนตัว) แต่มันจะคุ้มค่าถ้าฉันสามารถลดบางสิ่งนี้ การใช้งาน CPU ฉันรู้ว่ายังมีสิ่งอื่น ๆ ที่จะต้องพิจารณาเช่นการเรียกไบนารีภายนอกเช่นsedสำหรับ bashism ง่ายๆเช่น${foo/bar}หรือแทนgrep=~ TL; DRทุบตีช้ากว่าจริง ๆ เมื่อเริ่มต้นและใช้งานเมื่อเปรียบเทียบกับขีดกลางหรือไม่ มี Unix shell อื่น ๆ ซึ่งมีประสิทธิภาพมากกว่าการทุบตีหรือไม่?
57 bash  performance  dash 

4
ฉันควรจะดูแลแมวที่ไม่จำเป็นหรือไม่?
ยูทิลิตีบรรทัดคำสั่งจำนวนมากสามารถรับอินพุตได้จากไพพ์หรือเป็นอาร์กิวเมนต์ชื่อไฟล์ สำหรับเชลล์สคริปต์แบบยาวฉันพบว่าการเริ่มต้นลูกโซ่ด้วย a catทำให้อ่านได้ง่ายขึ้นโดยเฉพาะถ้าคำสั่งแรกต้องการอาร์กิวเมนต์หลายบรรทัด เปรียบเทียบ sed s/bla/blaha/ data \ | grep blah \ | grep -n babla และ cat data \ | sed s/bla/blaha/ \ | grep blah \ | grep -n babla วิธีหลังมีประสิทธิภาพน้อยลงหรือไม่ ถ้าเป็นเช่นนั้นความแตกต่างมากพอที่จะใส่ใจว่าสคริปต์รันหรือไม่พูดเป็นวินาทีหรือไม่ ความแตกต่างในการอ่านไม่มาก

2
ทำไม egrep [wW] [oO] [rR] [dD] เร็วกว่าคำว่า grep -i?
ฉันใช้grep -iบ่อยขึ้นและฉันพบว่ามันช้ากว่าของegrepที่ฉันเปรียบเทียบกับตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็ก: $ time grep -iq "thats" testfile real 0m0.041s user 0m0.038s sys 0m0.003s $ time egrep -q "[tT][hH][aA][tT][sS]" testfile real 0m0.010s user 0m0.003s sys 0m0.006s ไม่grep -iทำแบบทดสอบเพิ่มเติมที่egrepไม่?
49 grep  performance 

1
ทำไม GNU ถึงพบว่ารวดเร็วเมื่อเปรียบเทียบกับเครื่องมือค้นหาไฟล์กราฟิก?
ฉันพยายามค้นหาไฟล์ที่ไม่มีอยู่ในโฮมไดเรกทอรีของฉันและไดเรกทอรีย่อยทั้งหมด find ~/ -name "bogus"ให้ข้อมูลแก่ฉันหลังจากนั้นไม่กี่วินาที แต่ตัวจัดการdolphinไฟล์ของ KDEต้องการเวลาเกือบ 3 นาทีในการทำเช่นเดียวกัน สอดคล้องกับที่มีประสบการณ์ก่อนหน้านี้ของฉันกับGNOMEbeagle การfindจัดการที่จะทำอย่างรวดเร็วเหมือนกันในขณะที่การค้นหากราฟิก (ซึ่งใช้งานง่ายกว่าพารามิเตอร์ commandline) ทากอยู่เบื้องหลัง?

2
ประสิทธิภาพของ unix sockets เทียบกับพอร์ต TCP
ตัวอย่างเช่นใน php-fpm: #listen = 127.0.0.1:9000 listen = /var/run/php-fpm/php-fpm.sock มีความแตกต่างด้านประสิทธิภาพที่สำคัญระหว่างการใช้ unix socket-based Listeners ผ่านพอร์ต TCP หรือไม่? (ไม่ใช่เฉพาะสำหรับ PHP แต่โดยทั่วไปแล้วมันแตกต่างกันไปในแต่ละบริการหรือไม่)

4
ระบบไฟล์ Linux ประสิทธิภาพสูงที่สุดสำหรับการจัดเก็บไฟล์ขนาดเล็กจำนวนมาก (HDD ไม่ใช่ SSD) คืออะไร
ฉันมีแผนผังไดเรกทอรีที่มีไฟล์ขนาดเล็กจำนวนมากและไฟล์ขนาดใหญ่จำนวนเล็กน้อย ขนาดเฉลี่ยของไฟล์ประมาณ 1 กิโลไบต์ มีไฟล์ 210158 และไดเรกทอรีในต้นไม้ (จำนวนนี้ได้รับจากการทำงานfind | wc -l) ไฟล์จำนวนเล็กน้อยได้รับการเพิ่ม / ลบ / เขียนใหม่หลายครั้งต่อสัปดาห์ สิ่งนี้ใช้กับไฟล์ขนาดเล็กเช่นเดียวกับไฟล์ที่มีขนาดใหญ่ขึ้น ระบบไฟล์ที่ฉันลอง (ext4, btrfs) มีปัญหากับการวางตำแหน่งไฟล์บนดิสก์ เมื่อเวลาผ่านไปนานกว่าตำแหน่งทางกายภาพของไฟล์บนดิสก์ (สื่อที่หมุนไม่ได้เป็นดิสก์สถานะของแข็ง) มีการกระจายแบบสุ่มมากขึ้น ผลกระทบเชิงลบของการกระจายแบบสุ่มนี้คือระบบไฟล์เริ่มช้าลง (เช่น: ช้ากว่าระบบไฟล์ใหม่ถึง 4 เท่า) มีระบบไฟล์ Linux (หรือวิธีการบำรุงรักษาระบบไฟล์) ที่ไม่ได้รับผลกระทบจากการลดลงของประสิทธิภาพนี้และสามารถรักษาโปรไฟล์ประสิทธิภาพที่มั่นคงบนสื่อที่หมุนได้หรือไม่? ระบบไฟล์อาจทำงานบน Fuse แต่จำเป็นต้องเชื่อถือได้

4
grep: หน่วยความจำหมด
ฉันกำลังค้นหาง่าย ๆ : grep -R Milledgeville ~/Documents และหลังจากระยะเวลาหนึ่งข้อผิดพลาดนี้ปรากฏขึ้น: grep: memory exhausted ฉันจะหลีกเลี่ยงสิ่งนี้ได้อย่างไร ฉันมี RAM 10GB ในระบบของฉันและมีแอปพลิเคชั่นบางตัวที่ทำงานอยู่ดังนั้นฉันจึงประหลาดใจจริงๆที่ grep ธรรมดาหมดหน่วยความจำ ~/Documentsประมาณ 100GB และมีไฟล์ทุกชนิด grep -RI อาจไม่มีปัญหานี้ แต่ฉันต้องการค้นหาในไฟล์ไบนารีเช่นกัน

8
มีไฟล์เก็บถาวรแบบขนาน (เช่น tar) หรือไม่?
มีบางอย่างในการจัดเก็บไฟล์แบบขนานหรือไม่ ทาร์นั้นยอดเยี่ยม แต่ฉันไม่ได้ใช้เทปเก็บถาวรและสิ่งสำคัญสำหรับฉันคือการเก็บถาวรเกิดขึ้นอย่างรวดเร็ว (ด้วยการบีบอัดเช่น bzip2) เนื่องจากฉันมี smp

3
VirtualBox: เป็นการดีที่จะกำหนดแกน CPU เสมือนมากกว่าจำนวนแกน CPU จริง
เนื่องจากฉันมีซีพียูที่สามารถใช้Hyper-Threadingได้ฉันสงสัยว่าเป็นความคิดที่ไม่ถูกต้องหรือไม่ที่จะกำหนดคอร์ CPU เสมือนมากกว่าจำนวนคอร์ CPU จริงตามคำแนะนำต่อไปนี้: สำเนา: CPU เสมือนเพิ่มเติมถูกกำหนดให้กับเครื่องเสมือนมากกว่าจำนวนฟิสิคัล CPU บนระบบโฮสต์ นี่น่าจะลดประสิทธิภาพของเครื่องเสมือนของคุณ โปรดพิจารณาลดจำนวนของ CPU เสมือน ใครสามารถให้เหตุผลกับหัวข้อนี้ EDIT1: CPU ที่เป็นปัญหาคือ Intel Core i7-4700HQ, Ark Intel , CPU Benchmark EDIT2: สมมติว่าไม่มี HW ที่ล้าสมัยเช่น HDD (แทนที่จะเป็น SSD) และ / หรือ Low RAM (16GB นี่ขั้นต่ำvm.swappiness4GB สำหรับ VM นี้) และอื่น ๆ

7
บังคับให้ไดเรกทอรีอยู่ในแคชเสมอ
ฉันได้ทดสอบวิธีการต่าง ๆ เพื่อปรับปรุงเวลาที่ใช้ในการรวบรวมโครงการ c ++ ทั้งหมดของฉัน ขณะนี้ใช้เวลาประมาณ 5 นาที ฉันทดลองกับ distcc, ccache และอื่น ๆ เมื่อเร็ว ๆ นี้ฉันค้นพบว่าถ้าฉันคัดลอกโครงการทั้งหมดของฉันลงใน RAM- ไดรฟ์แล้วรวบรวมจากที่นั่นจะลดเวลาในการคอมไพล์ลงเหลือ 30% จากเดิม - เพียง 1.5 นาที เห็นได้ชัดว่าการทำงานจากไดรฟ์แรมนั้นใช้ไม่ได้จริง ดังนั้นไม่มีใครรู้วิธีที่ฉันสามารถบังคับให้ระบบปฏิบัติการที่จะเก็บไดเรกทอรีบางแคชเสมอ ? ฉันยังต้องการให้ไดเรกทอรีซิงค์กลับไปที่ดิสก์เหมือนปกติ แต่ฉันต้องการคัดลอกข้อมูลในหน่วยความจำด้วยเช่นกัน เป็นไปได้ไหม แก้ไข: ในฐานะที่เป็นทางออกที่เป็นไปได้เราแค่คิดว่าจะเปิดตัวภูตที่วิ่งrsyncทุก ๆ 10 วินาทีหรือมากกว่านั้นเพื่อซิงค์ดิสก์ไดรฟ์กับไดรฟ์ RAM จากนั้นเราก็เรียกใช้การรวบรวมจากไดรฟ์แรม rsyncเป็นอย่างเห็นได้ชัด แต่จะทำงานจริงๆ? แน่นอนว่าระบบปฏิบัติการนั้นสามารถทำได้ดีกว่า ....

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