מי שניסה להגדיר בלינוקס מנגנון Traffic shaping יודע שלא מדובר במשימה לרכי לבב.
trickle הוא פתרון פשוט, שעובד עבור ישומים שמשתמשים בחיבור TCP בלבד.
טריקל עובד במרחב המשתמש ולא צריך מודולים בקרנל או משהו מורכב אחר.
ככה זה נראה בלי טריקל:
$ wget http://yadan.net/bulk.dat
–22:01:39– http://yadan.net/bulk.dat
=> `bulk.dat'
Resolving yadan.net… 10.0.0.2
Connecting to yadan.net|10.0.0.2|:80… connected.
HTTP request sent, awaiting response… 200 OK
Length: 20,480,000 (20M) [chemical/x-mopac-input]
14% [=============> ] 6,966,584 11.07M/s
וככה עם:
$ trickle -d 50k wget http://yadan.net/bulk.dat
trickle: Could not reach trickled, working independently: No such file or directory
–22:04:33– http://yadan.net/bulk.dat
=> `bulk.dat.2'
Resolving yadan.net… 10.0.0.2
Connecting to yadan.net|10.0.0.2|:80… connected.
HTTP request sent, awaiting response… 200 OK
Length: 20,480,000 (20M) [chemical/x-mopac-input]1% [> ] 278,528 52.48K/s ETA 06:15
רסיסים (RSS)
מאי 31st, 2007 ב1:21
יפה מאוד. ההבחנה בין מרחב משתמש לקרנל ידוע לי, אך לא מוכרת לי. לא ברור לי מה ההבדל מבחינת המשתמש (בתוכנה).
אני אנצל את הפוסט לשאלה תיאורית:
אני לא עובד עם נתב, אבל זה מעניין:
האם לנתבים יש מנגנון שמאפשר למנהל להגדיר שכתובת IP איקס ברשת הפנימית לא תקבל רוחב פס של יותר מ Y1 להעלאה ו- Y2 להורדה?
בצורה כזו, אפשר ליצור רשת שבה משתמש אחד לא יכול להשתלט על כל רוחב הפס.
(אני מציג את השאלה בצורה פשטנית בכוונה, הרי אם יש לך שלושה משתמשים מחוברים ברשת, תרצה, למשל, לתת לכל משתמש מאה אחוזים אם הוא כרגע המשתמש היחיד, או למשל לבטל את ההגבלה אם אינה מפריע למשתמשים אחרים, וכ').
מאי 31st, 2007 ב8:40
יונתן, ההבדל הוא בעיקר מבחינת פיתוח (הרבה יותר קשה לפתח תוכנות במרחב הקרנל) ומבחינת ההתקנה היותר מורכבת בדרך כלל.
מצד שני, יש הרבה דברים שפשוט אי אפשר לעשות במרחב המשתמש.
למעשה, אני די בטוח שטריקל עושה כמה טריקים די מגניבים כדי להשיג את האפקט הזה (לזהות בזמן ריצה קריאות לפונקציות מסויימות ולתמרן אותן).
אני בטוח שיש נתבים שתומכים בזה. למעשה כל נתב שמריץ לינוקס תומך בזה מבחינת תשתית, אבל בנתבים זולים לא יחשפו את היכולת הזו (גם כי השימוש בה דורש מומחיות שאין למשתמשים ממוצעים).
מאי 31st, 2007 ב9:57
Wondershaper זה מה שאני משתמש בו בשמחה היום. הורדות כבדות מאוד של טורנטים לא מזיזות לי את הצ'ופצ'יק בסשנים של SSH, שיחות סקייפ וכמובן גלישת HTTP רגילה.
מאי 31st, 2007 ב10:06
אוקיי עמרי, תודה.
בכלל, חומרת מחשבים זה דבר מוזר קצת כיום: היצור הפיזי זול בצורה בלתי רגילה, למרות שהמוצרים מורכבים מאוד מבחינה טכנית ומשוכללים מאוד מבחינת היכולות.
מאי 31st, 2007 ב12:15
סליחה על השאלה הלא קשורה, אבל יש לך קישור לפלאגאין שמציג לך מערכת הפעלה + דפדפן של מי שמגיב?
שחר
מאי 31st, 2007 ב12:25
בטח שיש לו. זו תוכנה שהוא כתב בעצמו (הוא גאון).
http://firestats.cc/
מאי 31st, 2007 ב15:43
עירא, בזמנו הגדרתי משהו די מתוחכם בעצמי, שעשה חלוקה דינמית בין HTTP לבין כל השאר (ככה שכשמישהו הוריד HTTP הוא קיבל עדיפות, ואחרת העדיפות הלכה לביטטורנט), ובנוסף תעדוף חבילות של SSH.
אם אתה רוצה להציץ בסקריפט אני אעלה אותו.
מאי 31st, 2007 ב16:08
עמרי, באיזו שפה כתבת את הסקריפט הזה?
מאי 31st, 2007 ב16:37
bash, אבל כמובן שהוא משתמש בtc
מאי 31st, 2007 ב16:47
תזכיר לי מה זה tc ?
מאי 31st, 2007 ב17:11
זה הבינארי שמאפשר שליטה על מערכת הTraffic control בלינוקס
מאי 31st, 2007 ב17:13
אה. אוקיי. טוב. את זה אין ב- Cygwin והסיבה ברורה.
תוכל לשלוח לי את הסקריפט הזה, סתם כדי שאראה במה מדובר?
מאי 31st, 2007 ב21:44
נראה לי שאתם סתם לא מבינים בזה, והיום אפשר די בקלות לעשות QOS נוח ופשוט עם הרבה תוכנות לינוקס (וכל ראוטר נורמלי היום תומך בזה).
לגבי TRICKLE, ממבט מהיר מאוד, זה לא עושה משהו מיוחד בכלל, פשוט עושה PRELOAD לפני שהתוכנה שאתה רוצה מופעלת וחושף לה סט משלו של פקודות I/O כמו READ ו WRITE ודואג לעשות השהייה בין הקריאות השונות כדי להאיט את הקצב (זה גם מסביר למה זה עובד רק על TCP שם יש CONGESTION CONTROL).