Changeset 594

Show
Ignore:
Timestamp:
05/15/07 00:34:14 (2 years ago)
Author:
chtekk
Message:

Some limits (memory ones) are in pages, we need them exported in kbytes, two reasons:
A) much easier to handle and work with on the client size

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/src/vcd/methods/vx/vx_limstatus.c

    r590 r594  
    2121#include "vxdb.h" 
    2222 
     23#include <unistd.h> 
    2324#include <vserver.h> 
    2425#include <sys/resource.h> 
     
    2728 
    2829static 
     30int pagestobytes(int pages) { 
     31        int bytes; 
     32        bytes = (pages * getpagesize()) >> 10; 
     33        return bytes; 
     34} 
     35 
     36static 
    2937struct limit_data { 
    3038        int id; 
    3139        char *db; 
     40        int pagestobytes; 
    3241} LIMIT[] = { 
    33         { RLIMIT_AS,       "mem_AS"      }, 
    34         { RLIMIT_LOCKS,    "file_LOCKS"  }, 
    35         { RLIMIT_MEMLOCK,  "mem_MEMLOCK" }, 
    36         { RLIMIT_MSGQUEUE, "ipc_MSGQUEUE" }, 
    37         { RLIMIT_NOFILE,   "file_NOFILE" }, 
    38         { RLIMIT_NPROC,    "sys_NPROC"    }, 
    39         { RLIMIT_RSS,      "mem_RSS"      }, 
    40         { VLIMIT_ANON,     "mem_ANON"    }, 
    41         { VLIMIT_DENTRY,   "file_DENTRY" }, 
    42         { VLIMIT_MAPPED,   "sys_MAPPED"  }, 
    43         { VLIMIT_NSEMS,    "ipc_NSEMS"    }, 
    44         { VLIMIT_NSOCK,    "file_NSOCK"  }, 
    45         { VLIMIT_OPENFD,   "file_OPENFD" }, 
    46         { VLIMIT_SEMARY,   "ipc_SEMARY"  }, 
    47         { VLIMIT_SHMEM,    "ipc_SHMEM"    }, 
    48         { 0,               NULL         
     42        { RLIMIT_AS,       "mem_AS",       1 }, 
     43        { RLIMIT_LOCKS,    "file_LOCKS",   0 }, 
     44        { RLIMIT_MEMLOCK,  "mem_MEMLOCK",  1 }, 
     45        { RLIMIT_MSGQUEUE, "ipc_MSGQUEUE", 0 }, 
     46        { RLIMIT_NOFILE,   "file_NOFILE",  0 }, 
     47        { RLIMIT_NPROC,    "sys_NPROC",    0 }, 
     48        { RLIMIT_RSS,      "mem_RSS",      1 }, 
     49        { VLIMIT_ANON,     "mem_ANON",     1 }, 
     50        { VLIMIT_DENTRY,   "file_DENTRY",  0 }, 
     51        { VLIMIT_MAPPED,   "sys_MAPPED",   0 }, 
     52        { VLIMIT_NSEMS,    "ipc_NSEMS",    0 }, 
     53        { VLIMIT_NSOCK,    "file_NSOCK",   0 }, 
     54        { VLIMIT_OPENFD,   "file_OPENFD",  0 }, 
     55        { VLIMIT_SEMARY,   "ipc_SEMARY",   0 }, 
     56        { VLIMIT_SHMEM,    "ipc_SHMEM",    0 }, 
     57        { 0,               NULL,           0
    4958}; 
    5059 
     
    92101                        } 
    93102 
     103                        int min = 0, cur = 0, max = 0; 
     104 
     105                        if (LIMIT[i].pagestobytes == 1) { 
     106                                min = pagestobytes((int) limstat.minimum); 
     107                                cur = pagestobytes((int) limstat.value); 
     108                                max = pagestobytes((int) limstat.maximum); 
     109                        } 
     110 
     111                        else { 
     112                                min = (int) limstat.minimum; 
     113                                cur = (int) limstat.value; 
     114                                max = (int) limstat.maximum; 
     115                        } 
     116 
    94117                        xmlrpc_array_append_item(env, response, xmlrpc_build_value(env, 
    95118                                "{s:s,s:i,s:i,s:i}", 
    96119                                "type", LIMIT[i].db, 
    97                                 "min",  (int) limstat.minimum
    98                                 "cur",  (int) limstat.value
    99                                 "max",  (int) limstat.maximum)); 
     120                                "min",  min
     121                                "cur",  cur
     122                                "max",  max)); 
    100123                } 
    101124        }