ข้อเสียของการใช้พรีโหลด? ทำไมค่าเริ่มต้นไม่รวมอยู่ด้วย


110

ฉันต้องการทราบว่าข้อเสียของการใช้preloadคืออะไร หากไม่มีข้อเสียpreloadจะเปิดใช้งานตามค่าเริ่มต้นดังนั้นฉันคิดว่ามีบางอย่าง

เอาล่ะคุณจำเป็นต้องมีมากขึ้นอีกนิด RAM แต่คนส่วนใหญ่จะมีโดยแรมไกลมากขึ้นแล้ว Ubuntu ต้องการ - เพื่อให้สิ่งที่เป็นข้อเสียของการใช้preload?


6
ขอบคุณสำหรับคำถามที่มีประโยชน์ของคุณ ฉันต้องการที่จะรู้ว่ามันเป็นตำนาน?
Saeed Zarinfam

1
การใช้ซีพียูและแบตเตอรี่อาจเป็นข้อเสียเปรียบสำหรับบางคน ... bugs.launchpad.net/ubuntu/+source/preload/+bug/481861
Mateo

1
เป็นคำถามที่ดี ดิสทริบิวชันบางตัวมาพร้อมโหลดล่วงหน้าเช่นระบบปฏิบัติการระดับประถม (ซึ่งเป็นสิ่งที่ฉันเรียกใช้บนแล็ปท็อปของฉันเพราะงานกาล่าเร็วกว่าเอกภาพของ Ubuntu)

1
เพียงเดา: เหตุผลหนึ่งที่ไม่รวมค่าเริ่มต้นคือความจริงที่ว่ามันไม่สามารถใช้ได้กับทุกระบบ (ข้อกำหนดของฮาร์ดแวร์อาจแตกต่างจากข้อกำหนดมาตรฐาน)
don.joey

2
brainstorm.ubuntu.com/idea/1122โพสต์ที่นี่แสดงให้เห็นว่ามัน "ว่ามันทำงานเป็น daemon ที่มีสิทธิ์รูท" ซึ่งอาจเป็นปัญหาด้านความปลอดภัยนอกจากนี้ยังมีการระดมสมองที่ต้องการให้มันรวมค่าเริ่มต้นbrainstorm.ubuntu.com/idea/14092
Mateo

คำตอบ:


65

พูดง่ายๆคือ Preload ไม่ใช่สำหรับทุกคน เป็นการดีถ้าคุณเปิดแอปพลิเคชันหรือไลบรารีเป็นจำนวนมาก เป็นอันตรายหากคุณโหลดแอปพลิเคชันหรือไลบรารีเป็นครั้งคราวเท่านั้น ฉันจะใช้สองตัวอย่างจากการใช้งานจริงของฉัน (และใช่ฉันใช้พรีโหลด)

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

ตัวอย่างที่สองคือเรค ในฐานะนักพัฒนาทับทิมที่เชื่อในการทดสอบผมใช้ rake a TON เรคจะทำงานรันสองสามวินาที - นาทีจากนั้นออก Preload ช่วยให้ฉันเร่งงานประจำวันของฉันให้เร็วขึ้นเพราะมันโหลดเรคและห้องสมุดที่ต้องการ (ซึ่งอาจมีจำนวนมาก) ล่วงหน้า ดังนั้นจึงมีการเริ่มต้นมากมายและหยุดการเสาะหา หน่วยความจำเสริมที่ใช้เพื่อเพิ่มความเร็วในการเรค 400 หรือ 500 ครั้งในระยะเวลาไม่กี่ชั่วโมงนั้นคุ้มค่า

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

สุดท้ายมีการโหลดล่วงหน้าแม้ว่าคุณจะไม่ได้ใช้งานมันก็กินแรม ดังนั้นหากคุณไม่ได้เปิดตัวแอปพลิเคชันบ่อยครั้งคุณอาจทำให้ระบบทั้งหมดของคุณช้าลงเล็กน้อยโดยไม่ต้องใช้ RAM นั้นสำหรับการแคชประเภทอื่น โปรดจำไว้ว่าแม้ว่าคุณจะมี RAM 32 Gigs ของ Linux จะพยายามใช้มันให้มากที่สุดเท่าที่จะทำได้เพื่อแคชข้อมูลเพื่อให้การโต้ตอบของคุณเร็วขึ้น โดยการใช้พรีโหลดคุณลดหน่วยความจำที่ว่างบางส่วน แม้ว่ามันจะเป็นเพียงเล็กน้อย แต่ 2 วินาทีที่คุณบันทึกการเปิดตัว Chrome 1 ครั้งอาจทำให้คุณเสียค่าใช้จ่าย 60 วินาทีในเดือนที่มันยังคงทำงานอยู่


1
นอกจากนี้การใช้พรีโหลดช้าบูทขึ้น ยิ่งโหลดสิ่งต่าง ๆ ไว้ล่วงหน้ามากเท่าใดระบบก็จะใช้งานได้นานขึ้นเท่านั้น ตอนนี้ลองนึกภาพว่าสิ่งที่คุณต้องการทำคือการบูตเขียนข้อความในบันทึกช่วยจำและปิดตัวลงทันที คุณจะรอแม้แต่ที่จะสามารถเขียนบันทึกได้เนื่องจากระบบของคุณโหลดสิ่งที่ไม่เกี่ยวข้องกับงานนั้นล่วงหน้า ดังนั้นในทางใดทางหนึ่งการโหลดล่วงหน้า (โดยทั่วไป) เป็นดาบสองคม
F-3000

1
Preload ไม่ได้ทำงานอย่างนั้นจริง ๆ ... มันให้คำแนะนำเคอร์เนลอย่าง "เฮ้โหลดมันไว้ในแคชของคุณในขณะที่คุณอยู่ที่นั่นฉันจะต้องการมันเร็ว ๆ นี้" และเคอร์เนลก็ทำเช่นนั้น ดังนั้นจึงไม่ได้ใช้ RAM เหมือนที่คุณอธิบาย อาจมีสองสิ่งที่เกิดขึ้นสรรพ: การโหลดลงในแคชจะผลักดันแอปพลิเคชั่นที่คุณกำลังจะใช้ในไม่ช้าซึ่งจะส่งผลให้เกิดการหยุดชะงักและฮาร์ดดิสก์สั้น ๆ เมื่อคุณกลับไปที่แอปพลิเคชัน
hurikhan77

1
ข้อที่สอง: หากพรีโหลดคาดการณ์รูปแบบการใช้งานของคุณผิด (ซึ่งอาจเป็นกรณีที่คุณโหลดแอปพลิเคชั่นอย่างต่อเนื่อง) มันจะแคชสิ่งต่าง ๆ ซึ่งจะถูกผลักออกจาก RAM อีกครั้งในภายหลัง ใช้ดีกว่าสำหรับ แต่ในที่สุดมันก็แค่ "สิ้นเปลือง" RAM ในขณะที่แคช vfs ทำดังนั้นมันจึงเป็นแรมที่ทิ้งแล้วและทำให้ "RAM ว่าง" ในทางใดทางหนึ่ง อย่างไรก็ตามจะแข่งขันกับ "แคชปกติ" ในขณะที่คุณเขียน
hurikhan77

1
รับ coteyr และ @ hurikhan77 การเรียกคืนข้างต้นคุณเห็นด้วยหรือไม่ Preload เป็นวิธีที่มีประสิทธิภาพในการช่วยปรับปรุงการรับรู้ความเร็วของกล่องเดสก์ท็อปรุ่นเก่าที่มี RAM ต่ำ (~ 800 MB ฟรีเมื่อเริ่มต้น) FYI ที่เปิดใช้งาน Preload ในกล่องที่ได้รับการตกแต่งใหม่นั้นจะทำให้เคอร์เนลผู้จัดการหน่วยความจำเสมือนทำงานมากมายสำหรับการทำอิมโพรไวเล็กน้อย
tuk0z

2
@lliseil หาก 800 MB นั้นเป็น RAM ที่ไม่ได้ถูกจัดสรรจริงๆการโหลดล่วงหน้าอาจช่วยได้ ... แต่มันอาจจะทำงานได้ดีขึ้นเมื่อมี RAM เพิ่มขึ้น และในทางกลับกันนั่นหมายความว่า Preload จะขัดแย้งกับแอปพลิเคชั่นที่ใช้หน่วยความจำที่คุณอาจเริ่มต้นใหม่ในภายหลัง การลดความว่องไวอาจจำเป็นที่นี่ซึ่งอาจทำให้การโหลดไม่ได้ผลทันทีที่คุณกำลังใช้ RAM มากเกินไป
hurikhan77

21

คำถามที่ถามโดย bountier Saeed Zarinfamเมื่อวันที่ 5 กันยายน 2012:

สวัสดีทุกคนฉันต้องการทราบว่ามันเป็นตำนานหรือไม่? ไม่[พรีโหลด]จริงๆปรับปรุงประสิทธิภาพการทำงานของฉันได้อย่างไร ข้อเสียของการใช้คืออะไร ฉันมีแล็ปท็อปที่มีสเปคนี้ (Core i5 CPU, 4GB RAM, 128GB SSD Hard) ขอบคุณมาก.

  • ไม่จำเป็นต้องทำการโหลดล่วงหน้าหากคุณมี SSD
    • นี้เป็นเพราะ SSDs ให้มากขึ้นเร็วขึ้นแบบสุ่มเวลาในการเข้าถึงกว่าฮาร์ดดิสก์ดังนั้น "โหลดก่อน" ไบนารี / การอ้างอิงในหน่วยความจำเป็นของเสีย, IMO
    • ข้อเสียพื้นฐานก็คือพรีโหลดคือ "การใช้" หน่วยความจำเพิ่มเติมโดยไม่ให้ประโยชน์ที่จับต้องได้

20
สิ่งนี้ไม่ครอบคลุมคำถามของ OP เนื่องจากมีข้อบกพร่องในการใช้พรีโหลดหรือไม่ ประการที่สองคุณมีความเห็นทำข้อความเกี่ยวกับ "โหลดล่วงหน้า" จากนั้นนำ "SSD" มาใช้ในสมการ คุณจะตอบคำถามในจุดใด
Ringtail

12

Preload เป็น "readahead daemon แบบปรับตัว" ที่ทำงานในพื้นหลังของระบบของคุณและสังเกตว่าโปรแกรมใดที่คุณใช้บ่อยที่สุดจะทำการแคชโปรแกรมเหล่านั้นเพื่อเร่งความเร็วในการโหลดแอปพลิเคชัน ด้วยการใช้ Preload คุณสามารถทำให้ RAM ที่ไม่ได้ใช้ทำงานได้ดีและปรับปรุงประสิทธิภาพโดยรวมของระบบเดสก์ท็อปของคุณ

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

Preload สามารถปรับปรุงเวลาเริ่มต้นแอปพลิเคชันให้ดียิ่งขึ้น เนื่องจากเครื่องจักรที่ทันสมัยส่วนใหญ่มีหน่วยความจำสำรองเพียงพอ Preload ทำให้ RAM นี้ใช้งานได้ดี 1

ตอนนี้ที่ถูกกล่าวว่าดูเหมือนว่าพรีโหลดเป็นสาธารณูปโภคที่ดีและมันอาจจะเป็น

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

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

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

ผลการทดลองของเราแสดงให้เห็นถึงการพัฒนาที่ดีขึ้นเกี่ยวกับเวลาเริ่มต้นแอปพลิเคชันเมื่อเปรียบเทียบกับแคชเย็นและอัตราการเข้าชมที่เหมาะสมเมื่อเทียบกับอัลกอริทึมการทำนายไร้เดียงสา

อย่างไรก็ตามการอยู่ในพื้นที่ของผู้ใช้ทำให้เกิดปัญหาและอุปสรรคที่สำคัญในการทำให้การแก้ปัญหาการแข่งขันเกิดขึ้นก่อนเวลา โดยเฉพาะอย่างยิ่งการไม่มีข้อมูลเต็มเกี่ยวกับคำขอ I / O ของแอปพลิเคชันและการขาดช่องทางการสื่อสารที่มีประสิทธิภาพด้วยระบบย่อยแคชของเพจทำให้ประสิทธิภาพการโหลดลดลงอย่างมากโดยเฉพาะอย่างยิ่งภายใต้เงื่อนไขหน่วยความจำแน่น

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

ในที่สุดเราก็มาพร้อมกับชุดคำแนะนำสำหรับนักพัฒนาระบบเกี่ยวกับวิธีการปรับปรุงเวลาบูตเวลาล็อกอินและเวลาเริ่มต้นแอปพลิเคชันโดยไม่ต้องย้อนกลับไปยัง prefetcher ที่รวมเข้ากับระบบย่อยแคชในเคอร์เนล แน่นอน prefetcher fi le-based ในเคอร์เนลสามารถปรับปรุงได้ 2

1ที่มา: techthrob

2ที่มา: Preload - Daemon Prefetching แบบปรับตัวโดย Behdad Esfahbod - วิทยานิพนธ์ที่ส่งสอดคล้องกับข้อกำหนดสำหรับระดับปริญญาวิทยาศาสตรมหาบัณฑิต - บัณฑิตภาควิชาวิทยาการคอมพิวเตอร์ - มหาวิทยาลัยโตรอนโตลิขสิทธิ์ (c) 2006 โดย Behdad Esfahbod


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

9

ข้อเสีย? ไม่มีเลย!

เพิ่มแอปพลิเคชั่นเปิดประสิทธิภาพโดยผู้ใช้ ฉันใช้มันเป็นเวลาหลายปีในระบบของฉันเช่นเดียวกับ "อ่านล่วงหน้า" และไม่มีปัญหา หน้าข้อผิดพลาดสำหรับโหลดไม่ได้แนะนำข้อบกพร่องใดใด

Preload จะตรวจสอบแอปพลิเคชันที่ผู้ใช้รันและโดยการวิเคราะห์ข้อมูลนี้คาดการณ์ว่าแอปพลิเคชันใดที่ผู้ใช้อาจรัน

มันเพิ่มเวลาบูตเล็กน้อย แต่ความเร็วลดเวลาเรียกแอปพลิเคชันไกลเกินกว่าปัญหาเล็กน้อยนี้

ดูบทความ

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

sudo apt-get install preload

ผล:

กราฟแสดงความแตกต่างระหว่างการเริ่มต้นปกติและการโหลดล่วงหน้า

อ้าง


3
ฉันรู้ว่ามันปริมาณเท่าไรและฉันอ่าน 'preload HowTos' หลายอัน แต่ไม่มีที่ไหนที่ฉันสามารถอ่านบางอย่างเกี่ยวกับข้อเสียได้ หากไม่มีการถอยกลับมันจะถูกจัดส่งตามค่าเริ่มต้นที่มีลีนุกซ์จำนวนมาก - แต่เท่าที่ฉันรู้ - นั่นไม่ใช่กรณี
Paradiesstaub

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

2
ไดอะแกรมของคุณดูดี แต่ขาดข้อมูลสำคัญ มันจะพอดีกับการนำเสนอ PowerPoint ของพนักงานขาย แต่ 100% จะเป็นตัวอย่างของ 'สถิติที่ไม่ดี' ตัวเลขเหล่านี้มาจากไหน โปรโตคอลใดที่ใช้บันทึกพวกเขา มันเป็นภาพรวมเดียวหรือไม่ มีเครื่องจักรกี่เครื่องที่เกี่ยวข้องในตัวอย่าง? ฮาร์ดแวร์คืออะไร โปรแกรมพรีโหลดตั้งค่าอย่างไร

1
@ หาง: คุณพูดถูก คุณไม่ใช่ผู้เขียนแผนภาพนั้น แต่ถ้าคุณคลิกลิงก์ทั้งหมดในบทความคุณมาที่เพจ Techthrob.com ซึ่งควรมีโฮสต์บทความที่เขียนโดยผู้เขียนโปรแกรม แต่หน้านั้นได้หายไป ดังนั้นจึงมีเพียงแหล่งที่มา: วิทยานิพนธ์ของผู้เขียน

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