summaryrefslogtreecommitdiff
path: root/util/processinfo_linux2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'util/processinfo_linux2.cpp')
-rw-r--r--util/processinfo_linux2.cpp242
1 files changed, 0 insertions, 242 deletions
diff --git a/util/processinfo_linux2.cpp b/util/processinfo_linux2.cpp
deleted file mode 100644
index e82e2d154aa..00000000000
--- a/util/processinfo_linux2.cpp
+++ /dev/null
@@ -1,242 +0,0 @@
-// processinfo_linux2.cpp
-
-/* Copyright 2009 10gen Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "processinfo.h"
-
-#include <iostream>
-#include <stdio.h>
-#include <malloc.h>
-#include <db/jsobj.h>
-#include <unistd.h>
-#include <sys/mman.h>
-
-using namespace std;
-
-#define KLONG long
-#define KLF "l"
-
-namespace mongo {
-
- class LinuxProc {
- public:
- LinuxProc( pid_t pid = getpid() ) {
- char name[128];
- sprintf( name , "/proc/%d/stat" , pid );
-
- FILE * f = fopen( name , "r");
- if ( ! f ) {
- stringstream ss;
- ss << "couldn't open [" << name << "] " << errnoWithDescription();
- string s = ss.str();
- // help the assert# control uasserted( 13538 , s.c_str() );
- msgassertedNoTrace( 13538 , s.c_str() );
- }
- int found = fscanf(f,
- "%d %s %c "
- "%d %d %d %d %d "
- "%lu %lu %lu %lu %lu "
- "%lu %lu %ld %ld " /* utime stime cutime cstime */
- "%ld %ld "
- "%ld "
- "%ld "
- "%lu " /* start_time */
- "%lu "
- "%ld " // rss
- "%lu %"KLF"u %"KLF"u %"KLF"u %"KLF"u %"KLF"u "
- /*
- "%*s %*s %*s %*s "
- "%"KLF"u %*lu %*lu "
- "%d %d "
- "%lu %lu"
- */
-
- ,
-
- &_pid,
- _comm,
- &_state,
- &_ppid, &_pgrp, &_session, &_tty, &_tpgid,
- &_flags, &_min_flt, &_cmin_flt, &_maj_flt, &_cmaj_flt,
- &_utime, &_stime, &_cutime, &_cstime,
- &_priority, &_nice,
- &_alarm,
- &_nlwp,
- &_start_time,
- &_vsize,
- &_rss,
- &_rss_rlim, &_start_code, &_end_code, &_start_stack, &_kstk_esp, &_kstk_eip
-
- /*
- &_wchan,
- &_exit_signal, &_processor,
- &_rtprio, &_sched
- */
- );
- if ( found == 0 ) {
- cout << "system error: reading proc info" << endl;
- }
- fclose( f );
- }
-
- unsigned long getVirtualMemorySize() {
- return _vsize;
- }
-
- unsigned long getResidentSize() {
- return (unsigned long)_rss * 4 * 1024;
- }
-
- int _pid;
- // The process ID.
-
- char _comm[128];
- // The filename of the executable, in parentheses. This is visible whether or not the executable is swapped out.
-
- char _state;
- //One character from the string "RSDZTW" where R is running, S is sleeping in an interruptible wait, D is waiting in uninterruptible
- // disk sleep, Z is zombie, T is traced or stopped (on a signal), and W is paging.
-
- int _ppid;
- // The PID of the parent.
-
- int _pgrp;
- // The process group ID of the process.
-
- int _session;
- // The session ID of the process.
-
- int _tty;
- // The tty the process uses.
-
- int _tpgid;
- // The process group ID of the process which currently owns the tty that the process is connected to.
-
- unsigned long _flags; // %lu
- // The kernel flags word of the process. For bit meanings, see the PF_* defines in <linux/sched.h>. Details depend on the kernel version.
-
- unsigned long _min_flt; // %lu
- // The number of minor faults the process has made which have not required loading a memory page from disk.
-
- unsigned long _cmin_flt; // %lu
- // The number of minor faults that the process
-
- unsigned long _maj_flt; // %lu
- // The number of major faults the process has made which have required loading a memory page from disk.
-
- unsigned long _cmaj_flt; // %lu
- // The number of major faults that the process
-
- unsigned long _utime; // %lu
- // The number of jiffies that this process has been scheduled in user mode.
-
- unsigned long _stime; // %lu
- // The number of jiffies that this process has been scheduled in kernel mode.
-
- long _cutime; // %ld
- // The number of jiffies that this removed field.
-
- long _cstime; // %ld
-
- long _priority;
- long _nice;
-
- long _nlwp; // %ld
- // The time in jiffies before the next SIGALRM is sent to the process due to an interval timer.
-
- unsigned long _alarm;
-
- unsigned long _start_time; // %lu
- // The time in jiffies the process started after system boot.
-
- unsigned long _vsize; // %lu
- // Virtual memory size in bytes.
-
- long _rss; // %ld
- // Resident Set Size: number of pages the process has in real memory, minus 3 for administrative purposes. This is just the pages which
- // count towards text, data, or stack space. This does not include pages which have not been demand-loaded in, or which are swapped out
-
- unsigned long _rss_rlim; // %lu
- // Current limit in bytes on the rss of the process (usually 4294967295 on i386).
-
- unsigned long _start_code; // %lu
- // The address above which program text can run.
-
- unsigned long _end_code; // %lu
- // The address below which program text can run.
-
- unsigned long _start_stack; // %lu
- // The address of the start of the stack.
-
- unsigned long _kstk_esp; // %lu
- // The current value of esp (stack pointer), as found in the kernel stack page for the process.
-
- unsigned long _kstk_eip; // %lu
- // The current EIP (instruction pointer).
-
-
-
- };
-
-
- ProcessInfo::ProcessInfo( pid_t pid ) : _pid( pid ) {
- }
-
- ProcessInfo::~ProcessInfo() {
- }
-
- bool ProcessInfo::supported() {
- return true;
- }
-
- int ProcessInfo::getVirtualMemorySize() {
- LinuxProc p(_pid);
- return (int)( p.getVirtualMemorySize() / ( 1024.0 * 1024 ) );
- }
-
- int ProcessInfo::getResidentSize() {
- LinuxProc p(_pid);
- return (int)( p.getResidentSize() / ( 1024.0 * 1024 ) );
- }
-
- void ProcessInfo::getExtraInfo(BSONObjBuilder& info) {
- struct mallinfo malloc_info = mallinfo(); // structure has same name as function that returns it. (see malloc.h)
- info.append("heap_usage_bytes", malloc_info.uordblks);
-
- LinuxProc p(_pid);
- info.append("page_faults", (int)p._maj_flt);
- }
-
- bool ProcessInfo::blockCheckSupported() {
- return true;
- }
-
- bool ProcessInfo::blockInMemory( char * start ) {
- static long pageSize = 0;
- if ( pageSize == 0 ) {
- pageSize = sysconf( _SC_PAGESIZE );
- }
- start = start - ( (unsigned long long)start % pageSize );
- unsigned char x = 0;
- if ( mincore( start , 128 , &x ) ) {
- log() << "mincore failed: " << errnoWithDescription() << endl;
- return 1;
- }
- return x & 0x1;
- }
-
-
-}