Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
htop
Commits
96b57ea8
Commit
96b57ea8
authored
Jan 30, 2014
by
Hisham Muhammad
Browse files
Merge pull request #10 from simpleigh/master
Added additional column to monitor OOM killer score of each process
parents
558b001e
da236ca3
Changes
6
Show whitespace changes
Inline
Side-by-side
Process.c
View file @
96b57ea8
...
@@ -81,6 +81,9 @@ typedef enum ProcessField_ {
...
@@ -81,6 +81,9 @@ typedef enum ProcessField_ {
#ifdef HAVE_CGROUP
#ifdef HAVE_CGROUP
CGROUP,
CGROUP,
#endif
#endif
#ifdef HAVE_OOM
OOM,
#endif
IO_PRIORITY,
IO_PRIORITY,
LAST_PROCESSFIELD
LAST_PROCESSFIELD
} ProcessField;
} ProcessField;
...
@@ -177,6 +180,9 @@ typedef struct Process_ {
...
@@ -177,6 +180,9 @@ typedef struct Process_ {
#ifdef HAVE_CGROUP
#ifdef HAVE_CGROUP
char* cgroup;
char* cgroup;
#endif
#endif
#ifdef HAVE_OOM
unsigned int oom;
#endif
} Process;
} Process;
}*/
}*/
...
@@ -202,6 +208,9 @@ const char *Process_fieldNames[] = {
...
@@ -202,6 +208,9 @@ const char *Process_fieldNames[] = {
#endif
#endif
#ifdef HAVE_CGROUP
#ifdef HAVE_CGROUP
"CGROUP"
,
"CGROUP"
,
#endif
#ifdef HAVE_OOM
"OOM"
,
#endif
#endif
"IO_PRIORITY"
,
"IO_PRIORITY"
,
"*** report bug! ***"
"*** report bug! ***"
...
@@ -228,6 +237,9 @@ const int Process_fieldFlags[] = {
...
@@ -228,6 +237,9 @@ const int Process_fieldFlags[] = {
#endif
#endif
#ifdef HAVE_CGROUP
#ifdef HAVE_CGROUP
PROCESS_FLAG_CGROUP
,
PROCESS_FLAG_CGROUP
,
#endif
#ifdef HAVE_OOM
0
,
#endif
#endif
PROCESS_FLAG_IOPRIO
PROCESS_FLAG_IOPRIO
};
};
...
@@ -253,6 +265,9 @@ const char *Process_fieldTitles[] = {
...
@@ -253,6 +265,9 @@ const char *Process_fieldTitles[] = {
#endif
#endif
#ifdef HAVE_CGROUP
#ifdef HAVE_CGROUP
" CGROUP "
,
" CGROUP "
,
#endif
#ifdef HAVE_OOM
" OOM "
,
#endif
#endif
"IO "
,
"IO "
,
"*** report bug! ***"
"*** report bug! ***"
...
@@ -276,6 +291,9 @@ void Process_getMaxPid() {
...
@@ -276,6 +291,9 @@ void Process_getMaxPid() {
Process_fieldTitles
[
TGID
]
=
" TGID "
;
Process_fieldTitles
[
TGID
]
=
" TGID "
;
Process_fieldTitles
[
PGRP
]
=
" PGRP "
;
Process_fieldTitles
[
PGRP
]
=
" PGRP "
;
Process_fieldTitles
[
SESSION
]
=
" SESN "
;
Process_fieldTitles
[
SESSION
]
=
" SESN "
;
#ifdef HAVE_OOM
Process_fieldTitles
[
OOM
]
=
" OOM "
;
#endif
Process_pidFormat
=
"%7u "
;
Process_pidFormat
=
"%7u "
;
Process_tpgidFormat
=
"%7d "
;
Process_tpgidFormat
=
"%7d "
;
}
else
{
}
else
{
...
@@ -285,6 +303,9 @@ void Process_getMaxPid() {
...
@@ -285,6 +303,9 @@ void Process_getMaxPid() {
Process_fieldTitles
[
TGID
]
=
" TGID "
;
Process_fieldTitles
[
TGID
]
=
" TGID "
;
Process_fieldTitles
[
PGRP
]
=
" PGRP "
;
Process_fieldTitles
[
PGRP
]
=
" PGRP "
;
Process_fieldTitles
[
SESSION
]
=
" SESN "
;
Process_fieldTitles
[
SESSION
]
=
" SESN "
;
#ifdef HAVE_OOM
Process_fieldTitles
[
OOM
]
=
" OOM "
;
#endif
Process_pidFormat
=
"%5u "
;
Process_pidFormat
=
"%5u "
;
Process_tpgidFormat
=
"%5d "
;
Process_tpgidFormat
=
"%5d "
;
}
}
...
@@ -545,6 +566,9 @@ static void Process_writeField(Process* this, RichString* str, ProcessField fiel
...
@@ -545,6 +566,9 @@ static void Process_writeField(Process* this, RichString* str, ProcessField fiel
#ifdef HAVE_CGROUP
#ifdef HAVE_CGROUP
case
CGROUP
:
snprintf
(
buffer
,
n
,
"%-10s "
,
this
->
cgroup
);
break
;
case
CGROUP
:
snprintf
(
buffer
,
n
,
"%-10s "
,
this
->
cgroup
);
break
;
#endif
#endif
#ifdef HAVE_OOM
case
OOM
:
snprintf
(
buffer
,
n
,
Process_pidFormat
,
this
->
oom
);
break
;
#endif
case
IO_PRIORITY
:
{
case
IO_PRIORITY
:
{
int
klass
=
IOPriority_class
(
this
->
ioPriority
);
int
klass
=
IOPriority_class
(
this
->
ioPriority
);
if
(
klass
==
IOPRIO_CLASS_NONE
)
{
if
(
klass
==
IOPRIO_CLASS_NONE
)
{
...
@@ -814,6 +838,10 @@ int Process_compare(const void* v1, const void* v2) {
...
@@ -814,6 +838,10 @@ int Process_compare(const void* v1, const void* v2) {
case
CGROUP
:
case
CGROUP
:
return
strcmp
(
p1
->
cgroup
?
p1
->
cgroup
:
""
,
p2
->
cgroup
?
p2
->
cgroup
:
""
);
return
strcmp
(
p1
->
cgroup
?
p1
->
cgroup
:
""
,
p2
->
cgroup
?
p2
->
cgroup
:
""
);
#endif
#endif
#ifdef HAVE_OOM
case
OOM
:
return
(
p1
->
oom
-
p2
->
oom
);
#endif
case
IO_PRIORITY
:
case
IO_PRIORITY
:
return
Process_effectiveIOPriority
(
p1
)
-
Process_effectiveIOPriority
(
p2
);
return
Process_effectiveIOPriority
(
p1
)
-
Process_effectiveIOPriority
(
p2
);
default:
default:
...
...
Process.h
View file @
96b57ea8
...
@@ -60,6 +60,9 @@ typedef enum ProcessField_ {
...
@@ -60,6 +60,9 @@ typedef enum ProcessField_ {
#ifdef HAVE_CGROUP
#ifdef HAVE_CGROUP
CGROUP
,
CGROUP
,
#endif
#endif
#ifdef HAVE_OOM
OOM
,
#endif
IO_PRIORITY
,
IO_PRIORITY
,
LAST_PROCESSFIELD
LAST_PROCESSFIELD
}
ProcessField
;
}
ProcessField
;
...
@@ -156,6 +159,9 @@ typedef struct Process_ {
...
@@ -156,6 +159,9 @@ typedef struct Process_ {
#ifdef HAVE_CGROUP
#ifdef HAVE_CGROUP
char
*
cgroup
;
char
*
cgroup
;
#endif
#endif
#ifdef HAVE_OOM
unsigned
int
oom
;
#endif
}
Process
;
}
Process
;
...
...
ProcessList.c
View file @
96b57ea8
...
@@ -660,6 +660,28 @@ static void ProcessList_readVServerData(Process* process, const char* dirname, c
...
@@ -660,6 +660,28 @@ static void ProcessList_readVServerData(Process* process, const char* dirname, c
#endif
#endif
#ifdef HAVE_OOM
static
void
ProcessList_readOomData
(
Process
*
process
,
const
char
*
dirname
,
const
char
*
name
)
{
char
filename
[
MAX_NAME
+
1
];
snprintf
(
filename
,
MAX_NAME
,
"%s/%s/oom_score"
,
dirname
,
name
);
FILE
*
file
=
fopen
(
filename
,
"r"
);
if
(
!
file
)
return
;
char
buffer
[
256
];
if
(
!
fgets
(
buffer
,
255
,
file
))
{
return
;
}
unsigned
int
oom
;
int
ok
=
sscanf
(
buffer
,
"%u"
,
&
oom
);
if
(
ok
>=
1
)
{
process
->
oom
=
oom
;
}
fclose
(
file
);
}
#endif
static
bool
ProcessList_readCmdlineFile
(
Process
*
process
,
const
char
*
dirname
,
const
char
*
name
)
{
static
bool
ProcessList_readCmdlineFile
(
Process
*
process
,
const
char
*
dirname
,
const
char
*
name
)
{
if
(
Process_isKernelThread
(
process
))
if
(
Process_isKernelThread
(
process
))
return
true
;
return
true
;
...
@@ -784,6 +806,10 @@ static bool ProcessList_processEntries(ProcessList* this, const char* dirname, P
...
@@ -784,6 +806,10 @@ static bool ProcessList_processEntries(ProcessList* this, const char* dirname, P
ProcessList_readVServerData
(
process
,
dirname
,
name
);
ProcessList_readVServerData
(
process
,
dirname
,
name
);
#endif
#endif
#ifdef HAVE_OOM
ProcessList_readOomData
(
process
,
dirname
,
name
);
#endif
if
(
!
ProcessList_readCmdlineFile
(
process
,
dirname
,
name
))
if
(
!
ProcessList_readCmdlineFile
(
process
,
dirname
,
name
))
goto
errorReadingProcess
;
goto
errorReadingProcess
;
...
...
ProcessList.h
View file @
96b57ea8
...
@@ -172,6 +172,10 @@ void ProcessList_sort(ProcessList* this);
...
@@ -172,6 +172,10 @@ void ProcessList_sort(ProcessList* this);
#endif
#endif
#ifdef HAVE_OOM
#endif
void
ProcessList_scan
(
ProcessList
*
this
);
void
ProcessList_scan
(
ProcessList
*
this
);
...
...
configure.ac
View file @
96b57ea8
...
@@ -145,5 +145,10 @@ then
...
@@ -145,5 +145,10 @@ then
AC_CHECK_HEADERS([hwloc.h],[:], [missing_headers="$missing_headers $ac_header"])
AC_CHECK_HEADERS([hwloc.h],[:], [missing_headers="$missing_headers $ac_header"])
fi
fi
AC_ARG_ENABLE(oom, [AC_HELP_STRING([--enable-oom], [enable OOM score reporting])], ,enable_oom="no")
if test "x$enable_oom" = xyes; then
AC_DEFINE(HAVE_OOM, 1, [Define if OOM score support enabled.])
fi
AC_CONFIG_FILES([Makefile htop.1])
AC_CONFIG_FILES([Makefile htop.1])
AC_OUTPUT
AC_OUTPUT
htop.1.in
View file @
96b57ea8
...
@@ -313,6 +313,9 @@ OpenVZ process ID.
...
@@ -313,6 +313,9 @@ OpenVZ process ID.
.B VXID
.B VXID
VServer process ID.
VServer process ID.
.TP
.TP
.B OOM
OOM killer score.
.TP
.B All other flags
.B All other flags
Currently unsupported (always displays '-').
Currently unsupported (always displays '-').
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment