Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
S
Slurm
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
tud-zih-energy
Slurm
Commits
94bebf38
Commit
94bebf38
authored
12 years ago
by
Danny Auble
Browse files
Options
Downloads
Patches
Plain Diff
Accounting - if jobacct_gather/none is used don't start polling thread
and alloc and such jobacctinfo.
parent
d3da7afd
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/common/slurm_jobacct_gather.c
+46
-10
46 additions, 10 deletions
src/common/slurm_jobacct_gather.c
with
46 additions
and
10 deletions
src/common/slurm_jobacct_gather.c
+
46
−
10
View file @
94bebf38
...
...
@@ -106,6 +106,7 @@ static pthread_mutex_t task_list_lock = PTHREAD_MUTEX_INITIALIZER;
static
bool
jobacct_shutdown
=
true
;
static
bool
jobacct_suspended
=
0
;
static
bool
plugin_polling
=
true
;
static
uint32_t
jobacct_job_id
=
0
;
static
uint32_t
jobacct_step_id
=
0
;
...
...
@@ -226,8 +227,10 @@ extern int jobacct_gather_init(void)
goto
done
;
}
if
(
!
strcasecmp
(
type
,
"jobacct_gather/none"
))
if
(
!
strcasecmp
(
type
,
"jobacct_gather/none"
))
{
plugin_polling
=
false
;
goto
done
;
}
plugin_type
=
type
;
type
=
slurm_get_proctrack_type
();
...
...
@@ -277,6 +280,9 @@ extern int jobacct_gather_startpoll(uint16_t frequency)
pthread_attr_t
attr
;
pthread_t
_watch_tasks_thread_id
;
if
(
!
plugin_polling
)
return
SLURM_SUCCESS
;
if
(
jobacct_gather_init
()
<
0
)
return
SLURM_ERROR
;
...
...
@@ -291,7 +297,7 @@ extern int jobacct_gather_startpoll(uint16_t frequency)
task_list
=
list_create
(
jobacctinfo_destroy
);
if
(
frequency
==
0
)
{
/* don't want dynamic monitoring? */
debug2
(
"jobacct
AIX
dynamic logging disabled"
);
debug2
(
"jobacct
_gather
dynamic logging disabled"
);
return
retval
;
}
...
...
@@ -302,11 +308,11 @@ extern int jobacct_gather_startpoll(uint16_t frequency)
if
(
pthread_create
(
&
_watch_tasks_thread_id
,
&
attr
,
&
_watch_tasks
,
NULL
))
{
debug
(
"jobacct
-
gather failed to create _watch_tasks "
debug
(
"jobacct
_
gather failed to create _watch_tasks "
"thread: %m"
);
frequency
=
0
;
}
else
debug3
(
"jobacct
-
gather
AIX
dynamic logging enabled"
);
debug3
(
"jobacct
_
gather dynamic logging enabled"
);
slurm_attr_destroy
(
&
attr
);
return
retval
;
...
...
@@ -336,7 +342,7 @@ extern void jobacct_gather_change_poll(uint16_t frequency)
if
(
jobacct_gather_init
()
<
0
)
return
;
if
(
freq
==
0
&&
frequency
!=
0
)
{
if
(
plugin_polling
&&
freq
==
0
&&
frequency
!=
0
)
{
pthread_attr_t
attr
;
pthread_t
_watch_tasks_thread_id
;
/* create polling thread */
...
...
@@ -381,6 +387,9 @@ extern int jobacct_gather_add_task(pid_t pid, jobacct_id_t *jobacct_id)
if
(
jobacct_gather_init
()
<
0
)
return
SLURM_ERROR
;
if
(
!
plugin_polling
)
return
SLURM_SUCCESS
;
if
(
jobacct_shutdown
)
return
SLURM_ERROR
;
...
...
@@ -413,7 +422,7 @@ error:
extern
jobacctinfo_t
*
jobacct_gather_stat_task
(
pid_t
pid
)
{
if
(
jobacct_shutdown
)
if
(
!
plugin_polling
||
jobacct_shutdown
)
return
NULL
;
else
if
(
pid
)
{
struct
jobacctinfo
*
jobacct
=
NULL
;
...
...
@@ -460,7 +469,7 @@ extern jobacctinfo_t *jobacct_gather_remove_task(pid_t pid)
struct
jobacctinfo
*
jobacct
=
NULL
;
ListIterator
itr
=
NULL
;
if
(
jobacct_shutdown
)
if
(
!
plugin_polling
||
jobacct_shutdown
)
return
NULL
;
slurm_mutex_lock
(
&
task_list_lock
);
...
...
@@ -490,7 +499,7 @@ error:
extern
int
jobacct_gather_set_proctrack_container_id
(
uint64_t
id
)
{
if
(
pgid_plugin
)
if
(
!
plugin_polling
||
pgid_plugin
)
return
SLURM_SUCCESS
;
if
(
cont_id
!=
(
uint64_t
)
NO_VAL
)
...
...
@@ -511,6 +520,9 @@ extern int jobacct_gather_set_proctrack_container_id(uint64_t id)
extern
int
jobacct_gather_set_mem_limit
(
uint32_t
job_id
,
uint32_t
step_id
,
uint32_t
mem_limit
)
{
if
(
!
plugin_polling
)
return
SLURM_SUCCESS
;
if
((
job_id
==
0
)
||
(
mem_limit
==
0
))
{
error
(
"jobacct_gather_set_mem_limit: jobid:%u mem_limit:%u"
,
job_id
,
mem_limit
);
...
...
@@ -528,6 +540,9 @@ extern int jobacct_gather_set_mem_limit(uint32_t job_id, uint32_t step_id,
extern
void
jobacct_gather_handle_mem_limit
(
uint32_t
total_job_mem
,
uint32_t
total_job_vsize
)
{
if
(
!
plugin_polling
)
return
;
if
(
jobacct_mem_limit
)
{
if
(
jobacct_step_id
==
NO_VAL
)
{
debug
(
"Job %u memory used:%u limit:%u KB"
,
...
...
@@ -568,7 +583,12 @@ extern void jobacct_gather_handle_mem_limit(
extern
jobacctinfo_t
*
jobacctinfo_create
(
jobacct_id_t
*
jobacct_id
)
{
struct
jobacctinfo
*
jobacct
=
xmalloc
(
sizeof
(
struct
jobacctinfo
));
struct
jobacctinfo
*
jobacct
;
if
(
!
plugin_polling
)
return
NULL
;
jobacct
=
xmalloc
(
sizeof
(
struct
jobacctinfo
));
if
(
!
jobacct_id
)
{
jobacct_id_t
temp_id
;
...
...
@@ -614,6 +634,9 @@ extern int jobacctinfo_setinfo(jobacctinfo_t *jobacct,
jobacct_id_t
*
jobacct_id
=
(
jobacct_id_t
*
)
data
;
struct
jobacctinfo
*
send
=
(
struct
jobacctinfo
*
)
data
;
if
(
!
plugin_polling
)
return
SLURM_SUCCESS
;
switch
(
type
)
{
case
JOBACCT_DATA_TOTAL
:
memcpy
(
jobacct
,
send
,
sizeof
(
struct
jobacctinfo
));
...
...
@@ -682,6 +705,9 @@ extern int jobacctinfo_getinfo(
struct
rusage
*
rusage
=
(
struct
rusage
*
)
data
;
struct
jobacctinfo
*
send
=
(
struct
jobacctinfo
*
)
data
;
if
(
!
plugin_polling
)
return
SLURM_SUCCESS
;
switch
(
type
)
{
case
JOBACCT_DATA_TOTAL
:
memcpy
(
send
,
jobacct
,
sizeof
(
struct
jobacctinfo
));
...
...
@@ -746,6 +772,9 @@ extern void jobacctinfo_pack(jobacctinfo_t *jobacct,
{
int
i
=
0
;
if
(
!
plugin_polling
&&
(
protocol_type
!=
PROTOCOL_TYPE_DBD
))
return
;
/* The function can take calls from both DBD and from regular
* SLURM functions. We choose to standardize on using the
* SLURM_PROTOCOL_VERSION here so if PROTOCOL_TYPE_DBD comes
...
...
@@ -759,7 +788,8 @@ extern void jobacctinfo_pack(jobacctinfo_t *jobacct,
if
(
protocol_type
==
PROTOCOL_TYPE_DBD
)
rpc_version
=
slurmdbd_translate_rpc
(
rpc_version
);
if
(
!
jobacct
)
{
/* pack an empty record */
if
(
!
jobacct
||
(
jobacct
->
min_cpu
==
NO_VAL
))
{
for
(
i
=
0
;
i
<
12
;
i
++
)
pack32
((
uint32_t
)
NO_VAL
,
buffer
);
for
(
i
=
0
;
i
<
4
;
i
++
)
...
...
@@ -792,6 +822,9 @@ extern int jobacctinfo_unpack(jobacctinfo_t **jobacct,
{
uint32_t
uint32_tmp
;
if
(
!
plugin_polling
&&
(
protocol_type
!=
PROTOCOL_TYPE_DBD
))
return
SLURM_SUCCESS
;
/* The function can take calls from both DBD and from regular
* SLURM functions. We choose to standardize on using the
* SLURM_PROTOCOL_VERSION here so if PROTOCOL_TYPE_DBD comes
...
...
@@ -847,6 +880,9 @@ unpack_error:
extern
void
jobacctinfo_aggregate
(
jobacctinfo_t
*
dest
,
jobacctinfo_t
*
from
)
{
if
(
!
plugin_polling
)
return
;
xassert
(
dest
);
if
(
!
from
||
(
from
->
min_cpu
==
(
uint32_t
)
NO_VAL
))
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment