02-04-2009, 11:21
|
|
|
חבר מתאריך: 13.12.05
הודעות: 1,963
|
|
טוב אז ככה. זו קצת טיפשות שלי ששכחתי מהפרט הזה אבל לא נורא
ה Used שמדווח Conky מחושב לפי
קוד:
total block - free blocks) * block size)
.
האחוזים מחושבים (זה מקוד המקור) לפי
קוד:
(available blocks * 100)/total blocks
קוד:
OBJ(fs_free_perc) {
if (obj->data.fs != NULL) {
if (obj->data.fs->size) {
spaced_print(p, p_max_size, "%*d", 4, "fs_free_perc",
pad_percents, (int) ((obj->data.fs->avail * 100) /
obj->data.fs->size));
} else {
snprintf(p, p_max_size, "0");
}
}
}
כמו שאתה רואה, אחד מחושב מה Free ואחד מה Available.
עכשיו, שכחתי שב ext3 (ובעוד כמה מערכות קבצים) כשאתה מוחק משהו, הוא לא תמיד נמחק (תלוי בפרמטרים של ה mount שלך) - הוא מדווח לך שזה נמחק והוא מוחק אותו ברקע או שהוא משאיר אותו לזמן מאוחר יותר כשתרצה להשתמש בו. מה שקורה הוא שיש באמת מקום פנוי אבל הוא לא זמין כרגע אלא רק כשתצטרך אותו בשלב מאוחר יותר.
בגלל זה השוני בין Free ל Available וזה מה שגורם לכך שהאחוזים לא מייצגים את מה שאתה מקבל מ fs_used מתוך fs_size...
אתה יכול לשנות את קוד המקור ולקמפל מחדש אבל לא נראה לי שתרצה לעשות את זה P:
עריכה: ד"א, הוא עושה את זה רק במקרה שלך - זה תלוי בפרמטרים שמחזירה לו הקריאה ל statfs. הכוונה היא שבמקרים מסויימים הוא יכול להראות אחוזים תואמים.
קוד:
OBJ(fs_used) {
if (obj->data.fs != NULL) {
human_readable(obj->data.fs->size - (obj->data.fs->free
? obj->data.fs->free : obj->data.fs->avail), p, 255,
"fs_used");
}
}
עריכה 2: אפשר לעשות patch שישים את אותו תנאי מ fs_used גם ב fs_free_perc - אם יהיה זמן נעשה...
נערך לאחרונה ע"י GreenBerret בתאריך 02-04-2009 בשעה 11:28.
|