delete rusage.c
This commit is contained in:
400
kernel/rusage.c
400
kernel/rusage.c
@ -1,400 +0,0 @@
|
||||
/**
|
||||
* \file rusage.c
|
||||
*/
|
||||
#include <types.h>
|
||||
#include <kmsg.h>
|
||||
#include <ihk/cpu.h>
|
||||
#include <ihk/mm.h>
|
||||
#include <ihk/debug.h>
|
||||
#include <process.h>
|
||||
#include <init.h>
|
||||
#include <march.h>
|
||||
#include <cls.h>
|
||||
#include <time.h>
|
||||
#include <syscall.h>
|
||||
#include <string.h>
|
||||
#include <rusage.h>
|
||||
|
||||
//#define DEBUG_PRINT_AP
|
||||
|
||||
#ifdef DEBUG_PRINT_AP
|
||||
#define dkprintf(...) kprintf(__VA_ARGS__)
|
||||
#define ekprintf(...) kprintf(__VA_ARGS__)
|
||||
#else
|
||||
#define dkprintf(...) do { if (0) kprintf(__VA_ARGS__); } while (0)
|
||||
#define ekprintf(...) kprintf(__VA_ARGS__)
|
||||
#endif
|
||||
|
||||
extern int num_processors ;
|
||||
static volatile int ap_stop = 1;
|
||||
|
||||
mcs_lock_node_t ap_syscall_semaphore;
|
||||
|
||||
extern struct ihk_os_monitor *monitor;
|
||||
|
||||
|
||||
#ifdef ENABLE_RUSAGE
|
||||
/* initialize rusage */
|
||||
void rusage_init() {
|
||||
int i;
|
||||
rusage_num_threads = 0;
|
||||
rusage_max_num_threads = 0;
|
||||
|
||||
os_status = IHK_STATUS_INACTIVE;
|
||||
rusage_hugetlb_usage = 0;
|
||||
rusage_hugetlb_max_usage = 0;
|
||||
for (i = 0; i < 1024; i++) {
|
||||
rusage_numa_stat[i] = 0;
|
||||
}
|
||||
rusage_rss_current = 0;
|
||||
rusage_rss_max = 0;
|
||||
}
|
||||
|
||||
/* count total rss */
|
||||
unsigned long count_rss () {
|
||||
return rusage_rss_current;
|
||||
}
|
||||
|
||||
/* count total cache */
|
||||
unsigned long count_cache () {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* count total rss_huge */
|
||||
unsigned long count_rss_huge () {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* count total mapped_file */
|
||||
unsigned long count_mapped_file () {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* count total max_usage */
|
||||
unsigned long count_max_usage() {
|
||||
return rusage_rss_max;
|
||||
}
|
||||
|
||||
/* count total kmem_usage */
|
||||
unsigned long count_kmem_usage() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* count total kmax_usage */
|
||||
unsigned long count_kmem_max_usage() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#include <sysfs.h>
|
||||
#include <vsprintf.h>
|
||||
|
||||
#ifdef ENABLE_RUSAGE
|
||||
char* strcat_rusage(char *s1, char *s2) {
|
||||
int i;
|
||||
int j;
|
||||
for (i = 0; s1[i] != '\0'; i++); //skip chars.
|
||||
for (j = 0; s2[j] != '\0'; j++) {
|
||||
s1[i+j] = s2[j];
|
||||
}
|
||||
s1[i+j] = '\0';
|
||||
return s1;
|
||||
}
|
||||
|
||||
static ssize_t
|
||||
show_rusage_memory_data(struct sysfs_ops *ops, void *instance, void *buf, size_t size)
|
||||
{
|
||||
return snprintf(buf, size, "rss %lu\ncache %lu\nrss_huge %lu\nmapped_file %lu\n",
|
||||
count_rss(),
|
||||
count_cache(),
|
||||
count_rss_huge(),
|
||||
count_mapped_file()
|
||||
);
|
||||
}
|
||||
|
||||
static ssize_t
|
||||
show_rusage_memory_max_usage_data(struct sysfs_ops *ops, void *instance, void *buf, size_t size)
|
||||
{
|
||||
return snprintf(buf,size,"%lu\n",count_max_usage());
|
||||
}
|
||||
|
||||
static ssize_t
|
||||
show_rusage_memory_kmem_usage_data(struct sysfs_ops *ops, void *instance, void *buf, size_t size)
|
||||
{
|
||||
return snprintf(buf,size,"%lu\n",count_kmem_usage());
|
||||
}
|
||||
|
||||
static ssize_t
|
||||
show_rusage_memory_kmem_max_usage_data(struct sysfs_ops *ops, void *instance, void *buf, size_t size)
|
||||
{
|
||||
return snprintf(buf,size,"%lu\n",count_kmem_max_usage());
|
||||
}
|
||||
|
||||
static ssize_t
|
||||
show_rusage_num_numa_nodes_data(struct sysfs_ops *ops, void *instance, void *buf, size_t size)
|
||||
{
|
||||
return snprintf(buf,size,"%d\n",ihk_mc_get_nr_numa_nodes());
|
||||
}
|
||||
|
||||
static ssize_t
|
||||
show_rusage_memory_numa_stat_data(struct sysfs_ops *ops, void *instance, void *buf, size_t size)
|
||||
{
|
||||
int i;
|
||||
int num_numa;
|
||||
char tmp_buf1[1024];
|
||||
char tmp_buf2[1024];
|
||||
unsigned long total = 0;
|
||||
memset(tmp_buf1, 0, 1024);
|
||||
num_numa = ihk_mc_get_nr_numa_nodes();
|
||||
|
||||
for (i = 0; i < num_numa; i++) {
|
||||
total += rusage_numa_stat[i];
|
||||
}
|
||||
sprintf(tmp_buf1, "total=%lu ", total);
|
||||
|
||||
for (i = 0; i < num_numa; i++) {
|
||||
sprintf(tmp_buf2, "N%d=%lu ", i, rusage_numa_stat[i]);
|
||||
strcat_rusage(tmp_buf1, tmp_buf2);
|
||||
memset(tmp_buf2, 0, 1024);
|
||||
}
|
||||
return snprintf(buf, size, "%s\n", tmp_buf1);
|
||||
}
|
||||
|
||||
static ssize_t
|
||||
show_rusage_hugetlb_usage_data(struct sysfs_ops *ops, void *instance, void *buf, size_t size)
|
||||
{
|
||||
return snprintf(buf, size, "%lu\n", rusage_hugetlb_usage);
|
||||
}
|
||||
|
||||
static ssize_t
|
||||
show_rusage_hugetlb_max_usage_data(struct sysfs_ops *ops, void *instance, void *buf, size_t size)
|
||||
{
|
||||
return snprintf(buf, size, "%lu\n", rusage_hugetlb_max_usage);
|
||||
}
|
||||
static ssize_t
|
||||
show_rusage_cpuacct_stat_data(struct sysfs_ops *ops, void *instance, void *buf, size_t size)
|
||||
{
|
||||
struct timespec uts;
|
||||
struct timespec sts;
|
||||
int i;
|
||||
int r = 0;
|
||||
|
||||
uts.tv_sec = 0;
|
||||
uts.tv_nsec = 0;
|
||||
sts.tv_sec = 0;
|
||||
sts.tv_nsec = 0;
|
||||
if (monitor)
|
||||
for (i = 0; i < num_processors; i++) {
|
||||
struct timespec ats;
|
||||
|
||||
tsc_to_ts(monitor[i].user_tsc, &ats);
|
||||
ts_add(&uts, &ats);
|
||||
tsc_to_ts(monitor[i].system_tsc, &ats);
|
||||
ts_add(&sts, &ats);
|
||||
}
|
||||
r = snprintf(buf, size, "user %lu\n", timespec_to_jiffy(&uts));
|
||||
r += snprintf(strchr(buf, '\0'), size - r, "system %lu\n",
|
||||
timespec_to_jiffy(&sts));
|
||||
return r;
|
||||
}
|
||||
static ssize_t
|
||||
show_rusage_cpuacct_usage_data(struct sysfs_ops *ops, void *instance, void *buf, size_t size)
|
||||
{
|
||||
struct timespec uts;
|
||||
int i;
|
||||
int r = 0;
|
||||
|
||||
uts.tv_sec = 0;
|
||||
uts.tv_nsec = 0;
|
||||
if (monitor)
|
||||
for (i = 0; i < num_processors; i++) {
|
||||
struct timespec ats;
|
||||
|
||||
tsc_to_ts(monitor[i].user_tsc + monitor[i].system_tsc,
|
||||
&ats);
|
||||
ts_add(&uts, &ats);
|
||||
}
|
||||
if (uts.tv_sec)
|
||||
r = snprintf(buf, size, "%lu%09lu\n", uts.tv_sec, uts.tv_nsec);
|
||||
else
|
||||
r = snprintf(buf, size, "%lu\n", uts.tv_nsec);
|
||||
return r;
|
||||
}
|
||||
|
||||
|
||||
static ssize_t
|
||||
show_rusage_cpuacct_usage_percpu_data(struct sysfs_ops *ops, void *instance, void *buf, size_t size)
|
||||
{
|
||||
struct timespec uts;
|
||||
int i;
|
||||
int r = 0;
|
||||
|
||||
((char *)buf)[0] = '\0';
|
||||
for (i = 0; i < num_processors; i++) {
|
||||
if (monitor) {
|
||||
tsc_to_ts(monitor[i].user_tsc + monitor[i].system_tsc,
|
||||
&uts);
|
||||
}
|
||||
else {
|
||||
uts.tv_sec = 0;
|
||||
uts.tv_nsec = 0;
|
||||
}
|
||||
if (uts.tv_sec)
|
||||
r += snprintf(strchr(buf, '\0'), size - r,
|
||||
"%lu%09lu ", uts.tv_sec, uts.tv_nsec);
|
||||
else
|
||||
r += snprintf(strchr(buf, '\0'), size - r,
|
||||
"%lu ", uts.tv_nsec);
|
||||
}
|
||||
((char *)buf)[r - 1] = '\n';
|
||||
return r;
|
||||
}
|
||||
|
||||
/* callback funciton of rusage(threads) sysfs */
|
||||
static ssize_t
|
||||
show_rusage_num_threads_data(struct sysfs_ops *ops, void *instance, void *buf, size_t size)
|
||||
{
|
||||
return snprintf(buf, size, "%lu\n", rusage_num_threads);
|
||||
}
|
||||
|
||||
/* callback funciton of rusage(max threads) sysfs */
|
||||
static ssize_t
|
||||
show_rusage_max_num_threads_data(struct sysfs_ops *ops, void *instance, void *buf, size_t size)
|
||||
{
|
||||
return snprintf(buf, size, "%lu\n", rusage_max_num_threads);
|
||||
}
|
||||
|
||||
/* definition of sysfs ops */
|
||||
struct sysfs_ops show_rusage_memory = {
|
||||
.show = &show_rusage_memory_data,
|
||||
};
|
||||
struct sysfs_ops show_rusage_memory_max_usage = {
|
||||
.show = &show_rusage_memory_max_usage_data,
|
||||
};
|
||||
struct sysfs_ops show_rusage_memory_kmem_usage = {
|
||||
.show = &show_rusage_memory_kmem_usage_data,
|
||||
};
|
||||
struct sysfs_ops show_rusage_memory_kmem_max_usage = {
|
||||
.show = &show_rusage_memory_kmem_max_usage_data,
|
||||
};
|
||||
struct sysfs_ops show_rusage_num_numa_nodes = {
|
||||
.show = &show_rusage_num_numa_nodes_data,
|
||||
};
|
||||
struct sysfs_ops show_rusage_memory_numa_stat = {
|
||||
.show = &show_rusage_memory_numa_stat_data,
|
||||
};
|
||||
struct sysfs_ops show_rusage_hugetlb_usage = {
|
||||
.show = &show_rusage_hugetlb_usage_data,
|
||||
};
|
||||
struct sysfs_ops show_rusage_hugetlb_max_usage = {
|
||||
.show = &show_rusage_hugetlb_max_usage_data,
|
||||
};
|
||||
struct sysfs_ops show_rusage_cpuacct_stat = {
|
||||
.show = &show_rusage_cpuacct_stat_data,
|
||||
};
|
||||
struct sysfs_ops show_rusage_cpuacct_usage = {
|
||||
.show = &show_rusage_cpuacct_usage_data,
|
||||
};
|
||||
struct sysfs_ops show_rusage_num_threads = {
|
||||
.show = &show_rusage_num_threads_data,
|
||||
};
|
||||
struct sysfs_ops show_rusage_cpuacct_usage_percpu = {
|
||||
.show = &show_rusage_cpuacct_usage_percpu_data,
|
||||
};
|
||||
struct sysfs_ops show_rusage_max_num_threads = {
|
||||
.show = &show_rusage_max_num_threads_data,
|
||||
};
|
||||
|
||||
/* create sysfs files for rusage. */
|
||||
void rusage_sysfs_setup(void) {
|
||||
int error;
|
||||
error = sysfs_createf(&show_rusage_memory, &rdata, 0444,
|
||||
"/sys/fs/cgroup/memory/memory.stat");
|
||||
if (error) {
|
||||
panic("rusage_sysfs_setup:sysfs_createf() failed\n");
|
||||
}
|
||||
error = sysfs_createf(&show_rusage_memory_max_usage, &rdata, 0444,
|
||||
"/sys/fs/cgroup/memory/memory.max_usage_in_bytes");
|
||||
if (error) {
|
||||
panic("rusage_sysfs_setup:sysfs_createf() failed\n");
|
||||
}
|
||||
error = sysfs_createf(&show_rusage_memory_kmem_usage, &rdata, 0444,
|
||||
"/sys/fs/cgroup/memory/memory.kmem.usage_in_bytes");
|
||||
if (error) {
|
||||
panic("rusage_sysfs_setup:sysfs_createf() failed\n");
|
||||
}
|
||||
error = sysfs_createf(&show_rusage_memory_kmem_max_usage, &rdata, 0444,
|
||||
"/sys/fs/cgroup/memory/memory.kmem.max_usage_in_bytes");
|
||||
if (error) {
|
||||
panic("rusage_sysfs_setup:sysfs_createf() failed\n");
|
||||
}
|
||||
error = sysfs_createf(&show_rusage_num_numa_nodes, &rdata, 0444,
|
||||
"/sys/fs/cgroup/cpu/num_numa_nodes.txt");
|
||||
if (error) {
|
||||
panic("rusage_sysfs_setup:sysfs_createf() failed\n");
|
||||
}
|
||||
error = sysfs_createf(&show_rusage_memory_numa_stat, &rdata, 0444,
|
||||
"/sys/fs/cgroup/memory/memory.numa_stat");
|
||||
if (error) {
|
||||
panic("rusage_sysfs_setup:sysfs_createf() failed\n");
|
||||
}
|
||||
error = sysfs_createf(&show_rusage_hugetlb_usage, &rdata, 0444,
|
||||
"/sys/fs/cgroup/hugetlb/hugetlb.1GB.usage_in_bytes");
|
||||
if (error) {
|
||||
panic("rusage_sysfs_setup:sysfs_createf() failed\n");
|
||||
}
|
||||
error = sysfs_createf(&show_rusage_hugetlb_max_usage, &rdata, 0444,
|
||||
"/sys/fs/cgroup/hugetlb/hugetlb.1GB.max_usage_in_bytes");
|
||||
if (error) {
|
||||
panic("rusage_sysfs_setup:sysfs_createf() failed\n");
|
||||
}
|
||||
error = sysfs_createf(&show_rusage_cpuacct_stat, &rdata, 0444,
|
||||
"/sys/fs/cgroup/cpuacct/cpuacct.stat");
|
||||
if (error) {
|
||||
panic("rusage_sysfs_setup:sysfs_createf() failed\n");
|
||||
}
|
||||
error = sysfs_createf(&show_rusage_cpuacct_usage, &rdata, 0444,
|
||||
"/sys/fs/cgroup/cpuacct/cpuacct.usage");
|
||||
if (error) {
|
||||
panic("rusage_sysfs_setup:sysfs_createf() failed\n");
|
||||
}
|
||||
error = sysfs_createf(&show_rusage_cpuacct_usage_percpu, &rdata, 0444,
|
||||
"/sys/fs/cgroup/cpuacct/cpuacct.usage_percpu");
|
||||
if (error) {
|
||||
panic("rusage_sysfs_setup:sysfs_createf() failed\n");
|
||||
}
|
||||
error = sysfs_createf(&show_rusage_num_threads, &rdata, 0444,
|
||||
"/sys/fs/cgroup/num_threads");
|
||||
if (error) {
|
||||
panic("rusage_sysfs_setup:sysfs_createf() failed\n");
|
||||
}
|
||||
error = sysfs_createf(&show_rusage_max_num_threads, &rdata, 0444,
|
||||
"/sys/fs/cgroup/max_num_threads");
|
||||
if (error) {
|
||||
panic("rusage_sysfs_setup:sysfs_createf() failed\n");
|
||||
}
|
||||
}
|
||||
|
||||
/* callback funciton of os_status sysfs */
|
||||
static ssize_t
|
||||
show_ihk_status_data(struct sysfs_ops *ops, void *instance, void *buf, size_t size)
|
||||
{
|
||||
return snprintf(buf, size, "%d\n", os_status);
|
||||
}
|
||||
|
||||
struct sysfs_ops show_ihk_status = {
|
||||
.show = &show_ihk_status_data,
|
||||
};
|
||||
|
||||
/* create sysfs files for monitoring status.*/
|
||||
void status_sysfs_setup(void) {
|
||||
int error;
|
||||
error = sysfs_createf(&show_ihk_status, &rdata, 0444,
|
||||
"/sys/fs/cgroup/mck_status");
|
||||
if (error) {
|
||||
panic("status_sysfs_setup:sysfs_createf() failed\n");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user