libtorrent Skip Zero filling trunk-r9738 גמרנו עם יוטורנט סופית :)
-
Class889
-
- חבר מביא חבר

- תגובות: 4081
- הצטרף: ינואר 2009
- מיקום: dev/null/
- נתן תודות: 77 פעמים
- קיבל תודות: 283 פעמים
עד עתה, הוספת טורנטים על NTFS עם קליינטים שמבוססים על libtorrent,
כגון qbittorrent, deluge ,transmission וכו', במידה וPre-Allocate היה מאופשר בתוכנה (על מנת לשמור על הביצועים של הכונן שלא יהיה שום פרגמנטציה) היה כותב אפסים לדיסק בתחילת ההורדה מה שהיה חונק את הכונן ולא נותן להוריד על מהירות גבוהה עד שהוא לא סיים את הכתיבת אפסים לאורך כל המקום שהוא שומר לו מראש.
ז"א שאם הייתם מוסיפים טורנט בגודל 10 גיגה ואתם מורידים אותו נניח על מהירות של 8MB/s , מה שהיה קורה שברגע שהוא הוריד את הPiece הראשון הוא היה מתחיל לכתוב לכונן 10GB של אפסים לאותו מקום שהוא אמור להוריד, מה שהיה גורם לירידת ביצועים מאוד משמעותית בזמן הכתיבה הזאת, ככה שהייתם מורידים על מהירות של רק 100KB~.
בעצם על ידי שינוי הקוד בlibtorrent שהמפתח הראשי עשה אחרי שביקשתי ממנו ובדקנו את זה, עכשיו libtorrent מדלג על השלב של כתיבת אפסים (כמו ביוטורנט) ובעצם הכונן לא יהיה עסוק בכתיבת אפסים אלא יעבוד כמו מערכת קבצים EXT3/4 אפשר להגיד, שבעצם יכין את המקום מראש וימנע פרגמנטציה ולא יפגע במהירות אף בכלל.
https://code.google.com/p/libtorrent/so ... angeLog#44
אישית?
אני מאוד מאוד מבסוט מזה.
כגון qbittorrent, deluge ,transmission וכו', במידה וPre-Allocate היה מאופשר בתוכנה (על מנת לשמור על הביצועים של הכונן שלא יהיה שום פרגמנטציה) היה כותב אפסים לדיסק בתחילת ההורדה מה שהיה חונק את הכונן ולא נותן להוריד על מהירות גבוהה עד שהוא לא סיים את הכתיבת אפסים לאורך כל המקום שהוא שומר לו מראש.
ז"א שאם הייתם מוסיפים טורנט בגודל 10 גיגה ואתם מורידים אותו נניח על מהירות של 8MB/s , מה שהיה קורה שברגע שהוא הוריד את הPiece הראשון הוא היה מתחיל לכתוב לכונן 10GB של אפסים לאותו מקום שהוא אמור להוריד, מה שהיה גורם לירידת ביצועים מאוד משמעותית בזמן הכתיבה הזאת, ככה שהייתם מורידים על מהירות של רק 100KB~.
בעצם על ידי שינוי הקוד בlibtorrent שהמפתח הראשי עשה אחרי שביקשתי ממנו ובדקנו את זה, עכשיו libtorrent מדלג על השלב של כתיבת אפסים (כמו ביוטורנט) ובעצם הכונן לא יהיה עסוק בכתיבת אפסים אלא יעבוד כמו מערכת קבצים EXT3/4 אפשר להגיד, שבעצם יכין את המקום מראש וימנע פרגמנטציה ולא יפגע במהירות אף בכלל.
https://code.google.com/p/libtorrent/so ... angeLog#44
אישית?
אני מאוד מאוד מבסוט מזה.
-
Class889
-
- חבר מביא חבר

- תגובות: 4081
- הצטרף: ינואר 2009
- מיקום: dev/null/
- נתן תודות: 77 פעמים
- קיבל תודות: 283 פעמים
בגירסאות הבאות של אותם תוכנות של שמבוססות על libtorrent כשהם ישתמשו בlibtorrent source חדש יותר, אז זה יהיה.
כל תוכנה והמפתחים שלה ואיך שהם מחליטים לעדכן גירסאות.
מי שרוצה גירסאת אלפא של qbittorrent שמדלגת על כתיבת אפסים יכול להוריד מפה:
http://builds.shiki.hu/temp/qbittorrent ... _setup.exe
זה עובד תקין ונבדק על ידי.
מה שכן בחלק מהטראקרים הסגורים לא יתנו לכם להוריד עם קליינט אלפא.
TL כן מאפשרים את הקליינט הזה באלפא.
כל תוכנה והמפתחים שלה ואיך שהם מחליטים לעדכן גירסאות.
מי שרוצה גירסאת אלפא של qbittorrent שמדלגת על כתיבת אפסים יכול להוריד מפה:
http://builds.shiki.hu/temp/qbittorrent ... _setup.exe
זה עובד תקין ונבדק על ידי.
מה שכן בחלק מהטראקרים הסגורים לא יתנו לכם להוריד עם קליינט אלפא.
TL כן מאפשרים את הקליינט הזה באלפא.
אני לא זוכר מתי האופציה הזו לא היתה קיימת ב-Transmission, אם בכלל (היא קיימת בטוח יותר מ-6 שנים), זוהי בעצם ברירת המחדל, preallocation fast = = sparse file (וכמובן יש preallocation full ו-disable).
אני ממש לא חושב ש-Transmission עושה שימוש ב-libtorrent אלא ב-libtransmission.
אני ממש לא חושב ש-Transmission עושה שימוש ב-libtorrent אלא ב-libtransmission.
-
Class889
-
- חבר מביא חבר

- תגובות: 4081
- הצטרף: ינואר 2009
- מיקום: dev/null/
- נתן תודות: 77 פעמים
- קיבל תודות: 283 פעמים
כנראה שלא ניסית את זה בווינדוס.
preallocate Sparse לא מגיע מהקליינט אלא מlibtorrent, וכמובן שזה קיים בכל קליינט אחר.
הקליינט הוא זה שפונה לlibtorrent על מנת לגשת למערכת קבצים.
אם תעשה pre allocate עם sparse זה יגרום לפרגמנטציה מאוד מאוד אבל מאוד מטורפת, עד כמה אתה שואל? בוא נגיד להוריד אלבום בflac של 300MB יעשה כ2000 סגמנטים בשביל האלבום הקטן הזה. מה שאומר שאם תרצה לקרוא את הקובץ מHDD הוא פשוט לא יזוז.
כמובן שפה מדובר על מערכת קבצים NTFS שהיא פועלת באופן מאוד שונה לעומת EXT3/4.
אז לכן חשוב היה לעשות את זה בווינדוס שכן תיהיה אלוקציה מלאה.
sparse != full pre allocate
אתה יכול לראות הסבר מורחב יותר כאן.
http://en.wikipedia.org/wiki/Sparse_file#Disadvantages
אם תכנס ליוטורנט אתה תראה שיש שם אופציה של diskio.no_zero מה שאומר שהוא יעשה בעצם עדיין יעשה FULL pre allocate (לא sparse) וידלג על הכתיבת אפסים, אם תבטל את זה אתה תראה בדיוק את מה שקורה עם קליינטים מבוססים libtorrent בווינדוס במצב הקיים.
preallocate Sparse לא מגיע מהקליינט אלא מlibtorrent, וכמובן שזה קיים בכל קליינט אחר.
הקליינט הוא זה שפונה לlibtorrent על מנת לגשת למערכת קבצים.
אם תעשה pre allocate עם sparse זה יגרום לפרגמנטציה מאוד מאוד אבל מאוד מטורפת, עד כמה אתה שואל? בוא נגיד להוריד אלבום בflac של 300MB יעשה כ2000 סגמנטים בשביל האלבום הקטן הזה. מה שאומר שאם תרצה לקרוא את הקובץ מHDD הוא פשוט לא יזוז.
כמובן שפה מדובר על מערכת קבצים NTFS שהיא פועלת באופן מאוד שונה לעומת EXT3/4.
אז לכן חשוב היה לעשות את זה בווינדוס שכן תיהיה אלוקציה מלאה.
sparse != full pre allocate
אתה יכול לראות הסבר מורחב יותר כאן.
http://en.wikipedia.org/wiki/Sparse_file#Disadvantages
אם תכנס ליוטורנט אתה תראה שיש שם אופציה של diskio.no_zero מה שאומר שהוא יעשה בעצם עדיין יעשה FULL pre allocate (לא sparse) וידלג על הכתיבת אפסים, אם תבטל את זה אתה תראה בדיוק את מה שקורה עם קליינטים מבוססים libtorrent בווינדוס במצב הקיים.
-
Class889
-
- חבר מביא חבר

- תגובות: 4081
- הצטרף: ינואר 2009
- מיקום: dev/null/
- נתן תודות: 77 פעמים
- קיבל תודות: 283 פעמים
כמו שאמרתי, יצא גירסת STABLE עם הsvn המתאים עם הפאץ שמדלג על הכתיבת אפסים :
http://www.qbittorrent.org/download.php
בהמשך שיהיה לי זמן אני אעשה גירסא גם של deluge
http://www.qbittorrent.org/download.php
בהמשך שיהיה לי זמן אני אעשה גירסא גם של deluge
