ฉันไม่มีทางเลือกอื่นที่จะแนะนำ แต่ฉันสามารถให้คำแนะนำสำหรับวิธีเพิ่มความเร็ว sshfs:
sshfs -o cache_timeout=115200 -o attr_timeout=115200 ...
สิ่งนี้ควรหลีกเลี่ยงการร้องขอไปกลับบางอย่างเมื่อคุณพยายามอ่านเนื้อหาหรือการอนุญาตสำหรับไฟล์ที่คุณเรียกคืนมาก่อนหน้านี้ในเซสชันของคุณ
sshfs จำลองการลบและการเปลี่ยนแปลงแบบโลคัลดังนั้นการเปลี่ยนแปลงใหม่ที่เกิดขึ้นบนเครื่องโลคัลควรปรากฏขึ้นทันทีแม้จะมีการหมดเวลาจำนวนมากเนื่องจากข้อมูลแคชถูกทิ้งโดยอัตโนมัติ
แต่ไม่แนะนำให้ใช้ตัวเลือกเหล่านี้หากไฟล์ระยะไกลอาจได้รับการปรับปรุงโดยที่เครื่องไม่ทราบเช่นจากผู้ใช้รายอื่นหรือเชลล์ ssh ระยะไกล ในกรณีนั้นการหมดเวลาที่ต่ำกว่าจะดีกว่า
ต่อไปนี้เป็นตัวเลือกเพิ่มเติมที่ฉันทดลองแม้ว่าฉันจะไม่แน่ใจว่ามีตัวเลือกใดบ้างที่สร้างความแตกต่าง:
sshfs_opts="-o auto_cache -o cache_timeout=115200 -o attr_timeout=115200 \
-o entry_timeout=1200 -o max_readahead=90000 -o large_read -o big_writes \
-o no_remote_lock"
คุณควรตรวจสอบตัวเลือกที่แนะนำโดย Meetaiในคำตอบของเขา
recursion
ปัญหาที่ใหญ่ที่สุดในเวิร์กโฟลว์ของฉันคือเมื่อฉันพยายามอ่านหลาย ๆ โฟลเดอร์เช่นในต้นไม้ลึกเพราะ sshfs ทำการร้องขอไปกลับสำหรับแต่ละโฟลเดอร์แยกกัน นี่อาจเป็นคอขวดที่คุณประสบกับ Eclipse
การร้องขอหลายโฟลเดอร์พร้อมกันสามารถช่วยได้ แต่แอพส่วนใหญ่ไม่ได้ทำเช่นนั้นพวกมันถูกออกแบบมาสำหรับระบบไฟล์ที่มีความหน่วงแฝงต่ำและมีการแคชอ่านล่วงหน้าดังนั้นพวกเขาจึงรอให้สถิติไฟล์หนึ่งไฟล์เสร็จสมบูรณ์ก่อนที่จะดำเนินการต่อ .
Precaching
แต่สิ่งที่ sshfs สามารถทำได้คือการมองไปที่ระบบไฟล์ระยะไกลรวบรวมสถิติโฟลเดอร์ก่อนที่ฉันจะขอพวกเขาและส่งมาให้ฉันเมื่อการเชื่อมต่อไม่ได้ถูกครอบครองทันที สิ่งนี้จะใช้แบนด์วิดท์เพิ่มเติม (จากข้อมูล lookahead ที่ไม่เคยใช้) แต่สามารถปรับปรุงความเร็วได้
เราสามารถบังคับให้ sshfs ทำการแคชแบบอ่านล่วงหน้าโดยเรียกใช้สิ่งนี้ก่อนที่คุณจะเริ่มงานของคุณหรือแม้กระทั่งในพื้นหลังเมื่องานของคุณกำลังดำเนินการอยู่:
find project/folder/on/mounted/fs > /dev/null &
ที่ควรแคชรายการไดเรกทอรีทั้งหมดล่วงหน้าลดค่าใช้จ่ายบางส่วนในภายหลังจากการไปกลับ (แน่นอนคุณต้องใช้การหมดเวลาขนาดใหญ่เช่นที่ฉันให้ไว้ก่อนหน้านี้มิฉะนั้นข้อมูลแคชนี้จะถูกล้างก่อนที่แอปของคุณจะเข้าถึงได้)
แต่นั่นfind
จะใช้เวลานาน เช่นเดียวกับแอปอื่น ๆ มันจะรอผลจากโฟลเดอร์หนึ่งก่อนที่จะขอแอปถัดไป
อาจเป็นไปได้ที่จะลดเวลาโดยรวมโดยขอให้กระบวนการค้นหาหลายรายการดูในโฟลเดอร์ต่างๆ ฉันไม่ได้ทดสอบเพื่อดูว่าสิ่งนี้มีประสิทธิภาพมากกว่าจริงหรือไม่ มันขึ้นอยู่กับว่า sshfs อนุญาตการร้องขอแบบขนานหรือไม่ (ฉันคิดว่ามันทำ)
find project/folder/on/mounted/fs/A > /dev/null &
find project/folder/on/mounted/fs/B > /dev/null &
find project/folder/on/mounted/fs/C > /dev/null &
หากคุณต้องการแคชเนื้อหาไฟล์ล่วงหน้าคุณสามารถลองทำสิ่งนี้:
tar c project/folder/on/mounted/fs > /dev/null &
เห็นได้ชัดว่าการดำเนินการนี้ใช้เวลานานกว่าจะถ่ายโอนข้อมูลจำนวนมากและต้องการให้คุณมีขนาดแคชที่ใหญ่ แต่เมื่อเสร็จแล้วการเข้าถึงไฟล์ควรรู้สึกดีและรวดเร็ว