Changeset 2255 in Sophya for trunk/SophyaLib/SysTools/resusage.cc


Ignore:
Timestamp:
Nov 8, 2002, 12:26:22 AM (23 years ago)
Author:
perderos
Message:

modifs pour lecture des infos de memoire sur Linux
O Perdereau LAL Orsay

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaLib/SysTools/resusage.cc

    r2212 r2255  
    11#include "resusage.h"
    22
     3#include <typeinfo>
    34#include <sys/types.h>
    45#include <sys/time.h>
     6#include <sys/stat.h>
    57#include <sys/resource.h>
    68#include <unistd.h>
    79#include <time.h>
    8 
     10#include <fcntl.h>
     11#include <fstream.h>
     12#include <stdio.h>
     13#include <string>
    914/*!
    1015  \class SOPHYA::ResourceUsage
     
    4651  getrlimit(RLIMIT_STACK, &rl);
    4752  max_stack = rl.rlim_cur/1024;
     53#if defined(Linux)
     54  // recuperation des limites sous Linux
     55  // car je ne comprends pas ce que renc=voie getrlimit
     56  // OPerdereau LAL Orsay  11/2002
     57  ReadLinuxTotMem();
     58#endif
    4859
    4960  cur_datasz = 0;
     
    5869  delta_tottm = 0;
    5970  delta_elapsed_time = 0;
     71  cur_pid = getpid();
    6072  Update();
    6173 
     
    8698  cur_systm = s_timeval2msec(rsu.ru_stime);
    8799  cur_tottm = cur_usrtm+cur_systm;
     100  delta_tottm = cur_tottm-delta_tottm;
     101
     102#if defined(Linux)
     103  // Recuperation de la place en memoire ss Linux
     104  ReadLinuxMem();
     105#else
    88106  cur_rss = rsu.ru_maxrss;
    89107  cur_datasz = rsu.ru_idrss;
    90108  cur_stack = rsu.ru_isrss;
    91   delta_tottm = cur_tottm-delta_tottm;
     109#endif
     110
    92111  delta_rss = cur_rss-delta_rss;
    93 
    94112  delta_elapsed_time = elapsed_time;
    95113  time_t tm = time(NULL);
     
    128146     << " kbytes" << endl;
    129147}
     148/*!
     149     Recuperation de la place en memoire ss Linux
     150     ecrit d'apres les sources du code de top
     151     O. Perdereau LAL Orsay 11/2002
     152
     153*/ 
     154void ResourceUsage::ReadLinuxMem(){
     155
     156#if defined(Linux)
     157
     158  char flnm[120];
     159 
     160  sprintf(flnm,"/proc/%d/statm",(int)cur_pid);
     161  ifstream fich(flnm) ;
     162
     163 
     164  long lia,lib,lic,lid,lie,lif,lig;
     165 
     166  fich >> lia >> lib >> lic >> lid >> lie >> lif >> lig ;
     167
     168  cur_rss = lia*4; // les valeurs sont en pages de 4 k
     169  cur_datasz = lib*4;
     170  cur_stack = lic*4;
     171
     172#endif
     173
     174}
     175
     176
     177/*!
     178   Recuperation de la memoire dispo ss Linux
     179   ecrit d'apres les sources du code de top
     180   O. Perdereau LAL Orsay 11/2002
     181*/
     182void ResourceUsage::ReadLinuxTotMem(){
     183#if defined(Linux)
     184
     185  char flnm[]="/proc/meminfo";
     186  char buff[512];
     187  ifstream fich(flnm) ;
     188
     189  fich.getline(buff,200); // on saute une ligne
     190
     191  string tst;
     192  long lia,lib,lic,lid,lie,lif;
     193  fich >> tst >> lia >> lib >> lic >> lid >> lie >> lif;
     194
     195  max_rss = lia/1024; // conversion  en kbytes 
     196
     197#endif
     198
     199}
Note: See TracChangeset for help on using the changeset viewer.