Portál AbcLinuxu, 26. dubna 2024 05:18


Dotaz: Zjisteni velikosti swapu

25.2.2007 19:12 M
Zjisteni velikosti swapu
Přečteno: 366×
Odpovědět | Admin
ahoj, chtel bych si udelat graf vyuziti swapu, jenze nedokazu zakladni vec - vycucnout si ten udaj :( zkousel jsem neco jako free -b | grep Swap | cut -fx -d" " jenze pokud se v tom radku meni pocet mezer diky ruznemu poctu cifer, tak to takhle proste nepujde:-( nenapadlo by prosim nekoho neco efektivnejsiho?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

25.2.2007 19:22 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: Zjisteni velikosti swapu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nějak nechápu proč si to nevyčteš z /proc ?
[petr@soban ~]$ cat /proc/meminfo | grep Swap
SwapCached:          0 kB
SwapTotal:      977248 kB
SwapFree:       977248 kB
25.2.2007 19:25 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Zjisteni velikosti swapu
Nebo se rovnou podívat do /proc/swaps
25.2.2007 19:47 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: Zjisteni velikosti swapu
Ale tady to není podle mě tak jednoduché, různý počet swapů (pokud jich má více) atd...

Jinak:
[petr@soban ~]$ gawk '/SwapCached/ {print $2 }' /proc/meminfo
0
25.2.2007 19:50 M
Rozbalit Rozbalit vše Re: Zjisteni velikosti swapu
diky, tohle si taky napisu, kdyby se to jednou hodilo ;)
25.2.2007 19:27 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Zjisteni velikosti swapu
Odpovědět | | Sbalit | Link | Blokovat | Admin

Můžete např. použít awk nebo to nejdřív prohnat přes

  tr -s ' '
25.2.2007 19:48 M
Rozbalit Rozbalit vše Re: Zjisteni velikosti swapu
Děkuji, to přesně hledám free -b | grep Swap | tr -s ' ' | cut -f3 -d" "
25.2.2007 19:55 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: Zjisteni velikosti swapu
A proč tak složitě ? 3 roury a 4 programy ????

Jsem vám napsal řešení:
gawk '/SwapCached/ {print $2 }' /proc/meminfo
Jinak i bude rychlejší:
[petr@soban ~]$ time free -b | grep Swap | tr -s ' ' | cut -f3 -d" "
0

real    0m0.009s
user    0m0.003s
sys     0m0.006s
[petr@soban ~]$ time gawk '/SwapCached/ {print $2 }' /proc/meminfo
0

real    0m0.003s
user    0m0.001s
sys     0m0.003s
25.2.2007 20:14 M
Rozbalit Rozbalit vše Re: Zjisteni velikosti swapu
/proc/meminfo mi nepoda informaci, kolik presne swapu je vyuzito, pouze mi rekne, kolik swapu mam celkem a kolik je volnych - rozdil techto hodnot je prave ta hodnota, kterou mi to poskytne pres ty roury. nepochybne existuje i elegantnejsi reseni nez ty "moje" roury..
25.2.2007 20:21 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: Zjisteni velikosti swapu
A co potom označuje hodnota SwapCached ?
25.2.2007 20:37 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Zjisteni velikosti swapu
25.2.2007 21:19 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: Zjisteni velikosti swapu
Jasně moje blbost - schválně jsem se díval jak to free počítá:
        meminfo();

......
        printf(
            "%-7s %10Lu %10Lu %10Lu\n", "Swap:",
            S(kb_swap_total),
            S(kb_swap_used),
            S(kb_swap_free)
        );

......
A meminfo je:
void meminfo(void){
  char namebuf[16]; /* big enough to hold any row name */
  mem_table_struct findme = { namebuf, NULL};
  mem_table_struct *found;
  char *head;
  char *tail;
  static const mem_table_struct mem_table[] = {
  {"Active",       &kb_active},       // important
  {"Buffers",      &kb_main_buffers}, // important
  {"Cached",       &kb_main_cached},  // important
  {"Committed_AS", &kb_committed_as},
  {"Dirty",        &kb_dirty},        // kB version of vmstat nr_dirty
  {"HighFree",     &kb_high_free},
  {"HighTotal",    &kb_high_total},
  {"Inact_clean",  &kb_inact_clean},
  {"Inact_dirty",  &kb_inact_dirty},
  {"Inact_laundry",&kb_inact_laundry},
  {"Inact_target", &kb_inact_target},
  {"Inactive",     &kb_inactive},     // important
  {"LowFree",      &kb_low_free},
  {"LowTotal",     &kb_low_total},
  {"Mapped",       &kb_mapped},       // kB version of vmstat nr_mapped
  {"MemFree",      &kb_main_free},    // important
  {"MemShared",    &kb_main_shared},  // important, but now gone!
  {"MemTotal",     &kb_main_total},   // important
  {"PageTables",   &kb_pagetables},   // kB version of vmstat nr_page_table_pages
  {"ReverseMaps",  &nr_reversemaps},  // same as vmstat nr_page_table_pages
  {"Slab",         &kb_slab},         // kB version of vmstat nr_slab
  {"SwapCached",   &kb_swap_cached},
  {"SwapFree",     &kb_swap_free},    // important
  {"SwapTotal",    &kb_swap_total},   // important
  {"VmallocChunk", &kb_vmalloc_chunk},
  {"VmallocTotal", &kb_vmalloc_total},
  {"VmallocUsed",  &kb_vmalloc_used},
  {"Writeback",    &kb_writeback},    // kB version of vmstat nr_writeback
  };
  const int mem_table_count = sizeof(mem_table)/sizeof(mem_table_struct);

  FILE_TO_BUF(MEMINFO_FILE,meminfo_fd);

  kb_inactive = ~0UL;

  head = buf;
  for(;;){
    tail = strchr(head, ':');
    if(!tail) break;
    *tail = '\0';
    if(strlen(head) >= sizeof(namebuf)){
      head = tail+1;
      goto nextline;
    }
    strcpy(namebuf,head);
    found = bsearch(&findme, mem_table, mem_table_count,
        sizeof(mem_table_struct), compare_mem_table_structs
    );
    head = tail+1;
    if(!found) goto nextline;
    *(found->slot) = strtoul(head,&tail,10);
nextline:
    tail = strchr(head, '\n');
    if(!tail) break;
    head = tail+1;
  }
  if(!kb_low_total){  /* low==main except with large-memory support */
    kb_low_total = kb_main_total;
    kb_low_free  = kb_main_free;
  }
  if(kb_inactive==~0UL){
    kb_inactive = kb_inact_dirty + kb_inact_clean + kb_inact_laundry;
  }
  kb_swap_used = kb_swap_total - kb_swap_free;
  kb_main_used = kb_main_total - kb_main_free;
}

25.2.2007 20:37 M
Rozbalit Rozbalit vše Re: Zjisteni velikosti swapu
nemam tuseni... na svem routeru pouzivam aktualne 2,4MB swapu, ovsem SwapCached ukazuje 0, takze to jistojiste neni to, co potrebuji...

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.