@ -8,7 +8,7 @@ extern struct cpu_local_var *clv;
|
||||
void panic(const char *msg)
|
||||
{
|
||||
if (clv) {
|
||||
struct ihk_os_monitor *monitor = cpu_local_var(monitor);
|
||||
struct ihk_os_cpu_monitor *monitor = cpu_local_var(monitor);
|
||||
|
||||
monitor->status = IHK_OS_MONITOR_PANIC;
|
||||
}
|
||||
|
||||
@ -54,6 +54,9 @@ typedef unsigned long ihk_mc_ap_flag;
|
||||
#define IHK_MC_AP_BANDWIDTH 0x010000
|
||||
#define IHK_MC_AP_LATENCY 0x020000
|
||||
|
||||
#define IHK_MC_PG_KERNEL 0
|
||||
#define IHK_MC_PG_USER 1
|
||||
|
||||
enum ihk_mc_pt_prepare_flag {
|
||||
IHK_MC_PT_FIRST_LEVEL,
|
||||
IHK_MC_PT_LAST_LEVEL,
|
||||
@ -86,8 +89,8 @@ void ihk_mc_reserve_arch_pages(struct ihk_page_allocator_desc *pa_allocator,
|
||||
unsigned long, unsigned long, int));
|
||||
|
||||
struct ihk_mc_pa_ops {
|
||||
void *(*alloc_page)(int, int, ihk_mc_ap_flag, int node);
|
||||
void (*free_page)(void *, int);
|
||||
void *(*alloc_page)(int, int, ihk_mc_ap_flag, int node, int is_user);
|
||||
void (*free_page)(void *, int, int is_user);
|
||||
|
||||
void *(*alloc)(int, ihk_mc_ap_flag);
|
||||
void (*free)(void *);
|
||||
@ -111,25 +114,43 @@ int ihk_mc_free_micpa(unsigned long mic_pa);
|
||||
void ihk_mc_clean_micpa(void);
|
||||
|
||||
void *_ihk_mc_alloc_aligned_pages_node(int npages, int p2align,
|
||||
ihk_mc_ap_flag flag, int node, char *file, int line);
|
||||
ihk_mc_ap_flag flag, int node, int is_user, char *file, int line);
|
||||
#define ihk_mc_alloc_aligned_pages_node(npages, p2align, flag, node) ({\
|
||||
void *r = _ihk_mc_alloc_aligned_pages_node(npages, p2align, flag, node, __FILE__, __LINE__);\
|
||||
void *r = _ihk_mc_alloc_aligned_pages_node(npages, p2align, flag, node, IHK_MC_PG_KERNEL, __FILE__, __LINE__);\
|
||||
r;\
|
||||
})
|
||||
#define ihk_mc_alloc_aligned_pages_node_user(npages, p2align, flag, node) ({\
|
||||
void *r = _ihk_mc_alloc_aligned_pages_node(npages, p2align, flag, node, IHK_MC_PG_USER, __FILE__, __LINE__);\
|
||||
r;\
|
||||
})
|
||||
|
||||
#define ihk_mc_alloc_aligned_pages(npages, p2align, flag) ({\
|
||||
void *r = _ihk_mc_alloc_aligned_pages_node(npages, p2align, flag, -1, __FILE__, __LINE__);\
|
||||
void *r = _ihk_mc_alloc_aligned_pages_node(npages, p2align, flag, -1, IHK_MC_PG_KERNEL, __FILE__, __LINE__);\
|
||||
r;\
|
||||
})
|
||||
|
||||
#define ihk_mc_alloc_aligned_pages_user(npages, p2align, flag) ({\
|
||||
void *r = _ihk_mc_alloc_aligned_pages_node(npages, p2align, flag, -1, IHK_MC_PG_USER, __FILE__, __LINE__);\
|
||||
r;\
|
||||
})
|
||||
|
||||
#define ihk_mc_alloc_pages(npages, flag) ({\
|
||||
void *r = _ihk_mc_alloc_aligned_pages_node(npages, PAGE_P2ALIGN, flag, -1, __FILE__, __LINE__);\
|
||||
void *r = _ihk_mc_alloc_aligned_pages_node(npages, PAGE_P2ALIGN, flag, -1, IHK_MC_PG_KERNEL, __FILE__, __LINE__);\
|
||||
r;\
|
||||
})
|
||||
|
||||
void _ihk_mc_free_pages(void *ptr, int npages, char *file, int line);
|
||||
#define ihk_mc_alloc_pages_user(npages, flag) ({\
|
||||
void *r = _ihk_mc_alloc_aligned_pages_node(npages, PAGE_P2ALIGN, flag, -1, IHK_MC_PG_USER, __FILE__, __LINE__);\
|
||||
r;\
|
||||
})
|
||||
|
||||
void _ihk_mc_free_pages(void *ptr, int npages, int is_user, char *file, int line);
|
||||
#define ihk_mc_free_pages(p, npages) ({\
|
||||
_ihk_mc_free_pages(p, npages, __FILE__, __LINE__);\
|
||||
_ihk_mc_free_pages(p, npages, IHK_MC_PG_KERNEL, __FILE__, __LINE__);\
|
||||
})
|
||||
|
||||
#define ihk_mc_free_pages_user(p, npages) ({\
|
||||
_ihk_mc_free_pages(p, npages, IHK_MC_PG_USER, __FILE__, __LINE__);\
|
||||
})
|
||||
|
||||
void *ihk_mc_allocate(int size, int flag);
|
||||
|
||||
@ -1,76 +1,102 @@
|
||||
#ifndef __RUSAGE_H
|
||||
#define __RUSAGE_H
|
||||
#ifndef __IHK_RUSAGE_H
|
||||
#define __IHK_RUSAGE_H
|
||||
|
||||
#define ENABLE_RUSAGE
|
||||
struct ihk_os_cpu_monitor {
|
||||
int status;
|
||||
#define IHK_OS_MONITOR_NOT_BOOT 0
|
||||
#define IHK_OS_MONITOR_IDLE 1
|
||||
#define IHK_OS_MONITOR_USER 2
|
||||
#define IHK_OS_MONITOR_KERNEL 3
|
||||
#define IHK_OS_MONITOR_KERNEL_HEAVY 4
|
||||
#define IHK_OS_MONITOR_KERNEL_OFFLOAD 5
|
||||
#define IHK_OS_MONITOR_KERNEL_FREEZING 8
|
||||
#define IHK_OS_MONITOR_KERNEL_FROZEN 9
|
||||
#define IHK_OS_MONITOR_KERNEL_THAW 10
|
||||
#define IHK_OS_MONITOR_PANIC 99
|
||||
int status_bak;
|
||||
unsigned long counter;
|
||||
unsigned long ocounter;
|
||||
unsigned long user_tsc;
|
||||
unsigned long system_tsc;
|
||||
};
|
||||
|
||||
#define RUSAGE_DEFAULT_SIZE 10
|
||||
struct ihk_os_monitor {
|
||||
unsigned long rusage_max_num_threads;
|
||||
unsigned long rusage_num_threads;
|
||||
unsigned long rusage_rss_max;
|
||||
long rusage_rss_current;
|
||||
unsigned long rusage_kmem_usage;
|
||||
unsigned long rusage_kmem_max_usage;
|
||||
unsigned long rusage_hugetlb_usage;
|
||||
unsigned long rusage_hugetlb_max_usage;
|
||||
unsigned long rusage_total_memory;
|
||||
unsigned long rusage_total_memory_usage;
|
||||
unsigned long rusage_total_memory_max_usage;
|
||||
unsigned long num_numa_nodes;
|
||||
unsigned long num_processors;
|
||||
unsigned long ns_per_tsc;
|
||||
unsigned long reserve[128];
|
||||
unsigned long rusage_numa_stat[1024];
|
||||
|
||||
struct ihk_os_cpu_monitor cpu[0];
|
||||
};
|
||||
|
||||
enum RUSAGE_MEMBER {
|
||||
RUSAGE_RSS,
|
||||
RUSAGE_CACHE,
|
||||
RUSAGE_RSS_HUGE,
|
||||
RUSAGE_MAPPED_FILE,
|
||||
RUSAGE_MAX_USAGE,
|
||||
RUSAGE_KMEM_USAGE,
|
||||
RUSAGE_KMAX_USAGE,
|
||||
RUSAGE_NUM_NUMA_NODES,
|
||||
RUSAGE_NUMA_STAT,
|
||||
RUSAGE_HUGETLB ,
|
||||
RUSAGE_HUGETLB_MAX ,
|
||||
RUSAGE_STAT_SYSTEM ,
|
||||
RUSAGE_STAT_USER ,
|
||||
RUSAGE_USAGE ,
|
||||
RUSAGE_USAGE_PER_CPU ,
|
||||
RUSAGE_NUM_THREADS ,
|
||||
RUSAGE_MAX_NUM_THREADS
|
||||
RUSAGE_RSS,
|
||||
RUSAGE_CACHE,
|
||||
RUSAGE_RSS_HUGE,
|
||||
RUSAGE_MAPPED_FILE,
|
||||
RUSAGE_MAX_USAGE,
|
||||
RUSAGE_KMEM_USAGE,
|
||||
RUSAGE_KMAX_USAGE,
|
||||
RUSAGE_NUM_NUMA_NODES,
|
||||
RUSAGE_NUMA_STAT,
|
||||
RUSAGE_HUGETLB ,
|
||||
RUSAGE_HUGETLB_MAX ,
|
||||
RUSAGE_STAT_SYSTEM ,
|
||||
RUSAGE_STAT_USER ,
|
||||
RUSAGE_USAGE ,
|
||||
RUSAGE_USAGE_PER_CPU ,
|
||||
RUSAGE_NUM_THREADS ,
|
||||
RUSAGE_MAX_NUM_THREADS
|
||||
};
|
||||
|
||||
struct r_data{
|
||||
unsigned long pid;
|
||||
unsigned long rss;
|
||||
unsigned long cache;
|
||||
unsigned long rss_huge;
|
||||
unsigned long mapped_file;
|
||||
unsigned long max_usage;
|
||||
unsigned long kmem_usage;
|
||||
unsigned long kmax_usage;
|
||||
unsigned long hugetlb;
|
||||
unsigned long hugetlb_max;
|
||||
unsigned long stat_system;
|
||||
unsigned long stat_user;
|
||||
unsigned long usage;
|
||||
struct r_data *next;
|
||||
unsigned long pid;
|
||||
unsigned long rss;
|
||||
unsigned long cache;
|
||||
unsigned long rss_huge;
|
||||
unsigned long mapped_file;
|
||||
unsigned long max_usage;
|
||||
unsigned long kmem_usage;
|
||||
unsigned long kmax_usage;
|
||||
unsigned long hugetlb;
|
||||
unsigned long hugetlb_max;
|
||||
unsigned long stat_system;
|
||||
unsigned long stat_user;
|
||||
unsigned long usage;
|
||||
struct r_data *next;
|
||||
} ;
|
||||
typedef struct r_data rusage_data;
|
||||
|
||||
rusage_data *rdata[RUSAGE_DEFAULT_SIZE];
|
||||
unsigned long rusage_max_num_threads;
|
||||
unsigned long rusage_num_threads;
|
||||
|
||||
enum ihk_os_status {
|
||||
IHK_STATUS_INACTIVE,
|
||||
IHK_STATUS_BOOTING,
|
||||
IHK_STATUS_RUNNING,
|
||||
IHK_STATUS_SHUTDOWN,
|
||||
IHK_STATUS_PANIC,
|
||||
IHK_STATUS_HUNGUP,
|
||||
IHK_STATUS_FREEZING,
|
||||
IHK_STATUS_FROZEN,
|
||||
IHK_STATUS_INACTIVE,
|
||||
IHK_STATUS_BOOTING,
|
||||
IHK_STATUS_RUNNING,
|
||||
IHK_STATUS_SHUTDOWN,
|
||||
IHK_STATUS_PANIC,
|
||||
IHK_STATUS_HUNGUP,
|
||||
IHK_STATUS_FREEZING,
|
||||
IHK_STATUS_FROZEN,
|
||||
};
|
||||
|
||||
enum ihk_os_status os_status;
|
||||
unsigned long sys_delegate_count;
|
||||
enum sys_delegate_state_enum {
|
||||
ENTER_KERNEL,
|
||||
EXIT_KERNEL,
|
||||
};
|
||||
enum sys_delegate_state_enum sys_delegate_state;
|
||||
|
||||
unsigned long rusage_kmem_usage;
|
||||
unsigned long rusage_kmem_max_usage;
|
||||
unsigned long rusage_hugetlb_usage;
|
||||
unsigned long rusage_hugetlb_max_usage;
|
||||
unsigned long rusage_usage_per_cpu[sizeof(cpu_set_t)/8];
|
||||
unsigned long rusage_numa_stat[1024];
|
||||
extern struct ihk_os_monitor *monitor;
|
||||
|
||||
extern void ihk_mc_set_os_status(unsigned long st);
|
||||
extern unsigned long ihk_mc_get_os_status();
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user