rusage: Fix available page sizes
Change-Id: I418075ff4b5341e0f5c7ff317e96461879a60f87
This commit is contained in:
committed by
Dominique Martinet
parent
c82c2c1231
commit
6810506c3d
@ -1,60 +0,0 @@
|
||||
#ifndef ARCH_RUSAGE_H_INCLUDED
|
||||
#define ARCH_RUSAGE_H_INCLUDED
|
||||
|
||||
#define DEBUG_RUSAGE
|
||||
|
||||
#define IHK_OS_PGSIZE_4KB 0
|
||||
#define IHK_OS_PGSIZE_2MB 1
|
||||
#define IHK_OS_PGSIZE_1GB 2
|
||||
|
||||
extern struct ihk_os_monitor *monitor;
|
||||
|
||||
extern int sprintf(char * buf, const char *fmt, ...);
|
||||
|
||||
#define DEBUG_ARCH_RUSAGE
|
||||
#ifdef DEBUG_ARCH_RUSAGE
|
||||
#define dprintf(...) \
|
||||
do { \
|
||||
char msg[1024]; \
|
||||
sprintf(msg, __VA_ARGS__); \
|
||||
kprintf("%s,%s", __FUNCTION__, msg); \
|
||||
} while (0);
|
||||
#define eprintf(...) \
|
||||
do { \
|
||||
char msg[1024]; \
|
||||
sprintf(msg, __VA_ARGS__); \
|
||||
kprintf("%s,%s", __FUNCTION__, msg); \
|
||||
} while (0);
|
||||
#else
|
||||
#define dprintf(...) do { } while (0)
|
||||
#define eprintf(...) \
|
||||
do { \
|
||||
char msg[1024]; \
|
||||
sprintf(msg, __VA_ARGS__); \
|
||||
kprintf("%s,%s", __FUNCTION__, msg); \
|
||||
} while (0);
|
||||
#endif
|
||||
|
||||
static inline int rusage_pgsize_to_pgtype(size_t pgsize)
|
||||
{
|
||||
int ret = IHK_OS_PGSIZE_4KB;
|
||||
#if 0 /* postk-TODO */
|
||||
switch (pgsize) {
|
||||
case PTL1_SIZE:
|
||||
ret = IHK_OS_PGSIZE_4KB;
|
||||
break;
|
||||
case PTL2_SIZE:
|
||||
ret = IHK_OS_PGSIZE_2MB;
|
||||
break;
|
||||
case PTL3_SIZE:
|
||||
ret = IHK_OS_PGSIZE_1GB;
|
||||
break;
|
||||
default:
|
||||
eprintf("unknown pgsize=%ld\n", pgsize);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
return ret;
|
||||
}
|
||||
|
||||
#endif /* !defined(ARCH_RUSAGE_H_INCLUDED) */
|
||||
@ -1,33 +0,0 @@
|
||||
#ifndef ARCH_RUSAGE_H_INCLUDED
|
||||
#define ARCH_RUSAGE_H_INCLUDED
|
||||
|
||||
#include <arch-memory.h>
|
||||
|
||||
#define DEBUG_RUSAGE
|
||||
|
||||
#define IHK_OS_PGSIZE_4KB 0
|
||||
#define IHK_OS_PGSIZE_2MB 1
|
||||
#define IHK_OS_PGSIZE_1GB 2
|
||||
|
||||
extern struct rusage_global rusage;
|
||||
|
||||
static inline int rusage_pgsize_to_pgtype(size_t pgsize)
|
||||
{
|
||||
int ret = IHK_OS_PGSIZE_4KB;
|
||||
|
||||
if (pgsize == PTL1_SIZE) {
|
||||
ret = IHK_OS_PGSIZE_4KB;
|
||||
}
|
||||
else if (pgsize == PTL2_SIZE) {
|
||||
ret = IHK_OS_PGSIZE_2MB;
|
||||
}
|
||||
else if (pgsize == PTL3_SIZE) {
|
||||
ret = IHK_OS_PGSIZE_1GB;
|
||||
}
|
||||
else {
|
||||
kprintf("%s: Error: Unknown pgsize=%ld\n", __FUNCTION__, pgsize);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
#endif /* !defined(ARCH_RUSAGE_H_INCLUDED) */
|
||||
@ -1,32 +0,0 @@
|
||||
#ifndef ARCH_RUSAGE_H_INCLUDED
|
||||
#define ARCH_RUSAGE_H_INCLUDED
|
||||
|
||||
#define DEBUG_RUSAGE
|
||||
|
||||
#define IHK_OS_PGSIZE_4KB 0
|
||||
#define IHK_OS_PGSIZE_2MB 1
|
||||
#define IHK_OS_PGSIZE_1GB 2
|
||||
|
||||
extern struct rusage_global rusage;
|
||||
|
||||
static inline int rusage_pgsize_to_pgtype(size_t pgsize)
|
||||
{
|
||||
int ret = IHK_OS_PGSIZE_4KB;
|
||||
switch (pgsize) {
|
||||
case PTL1_SIZE:
|
||||
ret = IHK_OS_PGSIZE_4KB;
|
||||
break;
|
||||
case PTL2_SIZE:
|
||||
ret = IHK_OS_PGSIZE_2MB;
|
||||
break;
|
||||
case PTL3_SIZE:
|
||||
ret = IHK_OS_PGSIZE_1GB;
|
||||
break;
|
||||
default:
|
||||
kprintf("%s: Error: Unknown pgsize=%ld\n", __FUNCTION__, pgsize);
|
||||
break;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
#endif /* !defined(ARCH_RUSAGE_H_INCLUDED) */
|
||||
@ -1,27 +0,0 @@
|
||||
#ifndef IHKLIB_RUSAGE_H_INCLUDED
|
||||
#define IHKLIB_RUSAGE_H_INCLUDED
|
||||
|
||||
#define IHK_MAX_NUM_PGSIZES 4
|
||||
#define IHK_MAX_NUM_NUMA_NODES 1024
|
||||
#define IHK_MAX_NUM_CPUS 1024
|
||||
|
||||
#define IHK_OS_PGSIZE_4KB 0
|
||||
#define IHK_OS_PGSIZE_2MB 1
|
||||
#define IHK_OS_PGSIZE_1GB 2
|
||||
|
||||
struct mckernel_rusage {
|
||||
unsigned long memory_stat_rss[IHK_MAX_NUM_PGSIZES];
|
||||
unsigned long memory_stat_mapped_file[IHK_MAX_NUM_PGSIZES];
|
||||
unsigned long memory_max_usage;
|
||||
unsigned long memory_kmem_usage;
|
||||
unsigned long memory_kmem_max_usage;
|
||||
unsigned long memory_numa_stat[IHK_MAX_NUM_NUMA_NODES];
|
||||
unsigned long cpuacct_stat_system;
|
||||
unsigned long cpuacct_stat_user;
|
||||
unsigned long cpuacct_usage;
|
||||
unsigned long cpuacct_usage_percpu[IHK_MAX_NUM_CPUS];
|
||||
int num_threads;
|
||||
int max_num_threads;
|
||||
};
|
||||
|
||||
#endif /* !defined(IHKLIB_RUSAGE_H_INCLUDED) */
|
||||
@ -44,7 +44,6 @@
|
||||
#include <config.h>
|
||||
#include "mcctrl.h"
|
||||
#include <ihk/ihk_host_user.h>
|
||||
#include <ihklib_rusage.h>
|
||||
#include <rusage.h>
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
|
||||
#include <uapi/linux/sched/types.h>
|
||||
@ -2376,7 +2375,7 @@ long mcctrl_getrusage(ihk_os_t ihk_os, struct mcctrl_ioctl_getrusage_desc *__use
|
||||
{
|
||||
struct mcctrl_ioctl_getrusage_desc desc;
|
||||
struct rusage_global *rusage_global = ihk_os_get_rusage(ihk_os);
|
||||
struct mckernel_rusage *rusage = NULL;
|
||||
struct ihk_os_rusage *rusage = NULL;
|
||||
int ret = 0;
|
||||
int i;
|
||||
unsigned long ut;
|
||||
@ -2388,13 +2387,13 @@ long mcctrl_getrusage(ihk_os_t ihk_os, struct mcctrl_ioctl_getrusage_desc *__use
|
||||
goto out;
|
||||
}
|
||||
|
||||
rusage = kmalloc(sizeof(struct mckernel_rusage), GFP_KERNEL);
|
||||
rusage = kmalloc(sizeof(struct ihk_os_rusage), GFP_KERNEL);
|
||||
if (!rusage) {
|
||||
printk("%s: kmalloc failed\n", __FUNCTION__);
|
||||
ret = -ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
memset(rusage, 0, sizeof(struct mckernel_rusage));
|
||||
memset(rusage, 0, sizeof(struct ihk_os_rusage));
|
||||
|
||||
/* Compile statistics */
|
||||
for (i = 0; i < IHK_MAX_NUM_PGSIZES; i++) {
|
||||
@ -2422,8 +2421,10 @@ long mcctrl_getrusage(ihk_os_t ihk_os, struct mcctrl_ioctl_getrusage_desc *__use
|
||||
rusage->num_threads = rusage_global->num_threads;
|
||||
rusage->max_num_threads = rusage_global->max_num_threads;
|
||||
|
||||
if (desc.size_rusage > sizeof(struct mckernel_rusage)) {
|
||||
printk("%s: desc.size_rusage=%ld > sizeof(struct mckernel_rusage)=%ld\n", __FUNCTION__, desc.size_rusage, sizeof(struct mckernel_rusage));
|
||||
if (desc.size_rusage > sizeof(struct ihk_os_rusage)) {
|
||||
printk("%s: desc.size_rusage=%ld > sizeof(struct mckernel_rusage)=%ld\n",
|
||||
__func__, desc.size_rusage,
|
||||
sizeof(struct ihk_os_rusage));
|
||||
ret = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -555,7 +555,7 @@ struct ihk_perf_event_attr{
|
||||
};
|
||||
|
||||
struct mcctrl_ioctl_getrusage_desc {
|
||||
void* rusage;
|
||||
struct ihk_os_rusage *rusage;
|
||||
size_t size_rusage;
|
||||
};
|
||||
|
||||
|
||||
@ -77,7 +77,7 @@ install(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/vmcore2mckdump"
|
||||
DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
||||
install(TARGETS sched_yield ldump2mcdump
|
||||
DESTINATION "${CMAKE_INSTALL_LIBDIR}")
|
||||
install(FILES "../include/ihklib_rusage.h"
|
||||
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/mckernel")
|
||||
install(FILES "${IHK_FULL_SOURCE_DIR}/linux/include/ihk/ihk_rusage.h"
|
||||
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/ihk")
|
||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/mcexec.1"
|
||||
DESTINATION "${CMAKE_INSTALL_MANDIR}/man1")
|
||||
|
||||
2
ihk
2
ihk
Submodule ihk updated: 58ed04c571...fc5807c12e
@ -3,11 +3,50 @@
|
||||
#ifndef __RUSAGE_H
|
||||
#define __RUSAGE_H
|
||||
|
||||
#include <ihk/ihk_rusage.h>
|
||||
|
||||
//#define RUSAGE_DEBUG
|
||||
|
||||
#define IHK_MAX_NUM_PGSIZES 4
|
||||
#define IHK_MAX_NUM_NUMA_NODES 1024
|
||||
#define IHK_MAX_NUM_CPUS 1024
|
||||
extern struct rusage_global rusage;
|
||||
|
||||
static inline int rusage_pgsize_to_pgtype(size_t pgsize)
|
||||
{
|
||||
int ret = IHK_OS_PGSIZE_4KB;
|
||||
int pgshift = pgsize_to_pgshift(pgsize);
|
||||
|
||||
switch (pgshift) {
|
||||
case 12:
|
||||
ret = IHK_OS_PGSIZE_4KB;
|
||||
break;
|
||||
case 16:
|
||||
ret = IHK_OS_PGSIZE_64KB;
|
||||
break;
|
||||
case 21:
|
||||
ret = IHK_OS_PGSIZE_2MB;
|
||||
break;
|
||||
case 25:
|
||||
ret = IHK_OS_PGSIZE_32MB;
|
||||
break;
|
||||
case 30:
|
||||
ret = IHK_OS_PGSIZE_1GB;
|
||||
break;
|
||||
case 34:
|
||||
ret = IHK_OS_PGSIZE_16GB;
|
||||
break;
|
||||
case 29:
|
||||
ret = IHK_OS_PGSIZE_512MB;
|
||||
break;
|
||||
case 42:
|
||||
ret = IHK_OS_PGSIZE_4TB;
|
||||
break;
|
||||
default:
|
||||
kprintf("%s: Error: Unknown pgsize=%ld\n",
|
||||
__func__, pgsize);
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
struct rusage_percpu {
|
||||
unsigned long user_tsc;
|
||||
@ -36,7 +75,7 @@ struct rusage_global {
|
||||
#ifdef RUSAGE_DEBUG
|
||||
unsigned long total_memory_max_usage_old; /* debug */
|
||||
#endif
|
||||
/* Used for translating results into struct mckernel_rusage */
|
||||
/* Used for translating results into struct ihk_os_rusage */
|
||||
unsigned long num_numa_nodes;
|
||||
unsigned long num_processors;
|
||||
unsigned long ns_per_tsc;
|
||||
|
||||
@ -9,7 +9,6 @@
|
||||
#include <memobj.h>
|
||||
#include <rusage.h>
|
||||
#include <ihk/ihk_monitor.h>
|
||||
#include <arch_rusage.h>
|
||||
#include <debug.h>
|
||||
|
||||
#ifdef ENABLE_RUSAGE
|
||||
|
||||
@ -84,7 +84,7 @@ Interface for Heterogeneous Kernels and McKernel.
|
||||
%{_libdir}/libldump2mcdump.so
|
||||
%{_includedir}/ihklib.h
|
||||
%{_includedir}/ihk/affinity.h
|
||||
%{_includedir}/mckernel/ihklib_rusage.h
|
||||
%{_includedir}/ihk/ihk_rusage.h
|
||||
%{_sysconfdir}/irqbalance_mck.in
|
||||
%{_sysconfdir}/irqbalance_mck.service
|
||||
%{_mandir}/man1/mcreboot.1.gz
|
||||
|
||||
@ -3,7 +3,6 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <ihklib.h>
|
||||
#include <mckernel/ihklib_rusage.h>
|
||||
|
||||
static void usage(char *cmd)
|
||||
{
|
||||
@ -16,7 +15,7 @@ int main(int argc, char *argv[])
|
||||
int os_num = 0;
|
||||
int ret = -1;
|
||||
int i = 0;
|
||||
struct mckernel_rusage mck_rusage;
|
||||
struct ihk_os_rusage mck_rusage;
|
||||
|
||||
if (argc != 2) {
|
||||
usage(argv[0]);
|
||||
|
||||
@ -6,7 +6,6 @@
|
||||
#include <sys/types.h>
|
||||
#include <getopt.h>
|
||||
#include <ihklib.h>
|
||||
#include <mckernel/ihklib_rusage.h>
|
||||
#include "util.h"
|
||||
#include "mck_bps_conflict.h"
|
||||
|
||||
@ -37,7 +36,7 @@ int main(int argc, char **argv)
|
||||
unsigned long memfree[4];
|
||||
int num_pgsizes;
|
||||
long pgsizes[3];
|
||||
struct mckernel_rusage rusage;
|
||||
struct ihk_os_rusage rusage;
|
||||
char *retstr;
|
||||
int boot_shutdown = 0;
|
||||
int mcexec_shutdown = 0;
|
||||
|
||||
@ -4,7 +4,6 @@
|
||||
#include <sys/syscall.h> /* For SYS_xxx definitions */
|
||||
#include "util.h"
|
||||
#include "ihklib.h"
|
||||
#include "mckernel/ihklib_rusage.h"
|
||||
|
||||
#define DEBUG
|
||||
|
||||
@ -21,7 +20,7 @@ int main(int argc, char **argv)
|
||||
{
|
||||
int i, j, ret = 0;
|
||||
void *mem;
|
||||
struct mckernel_rusage rusage;
|
||||
struct ihk_os_rusage rusage;
|
||||
|
||||
for (j = 0; j < NLOOP; j++) {
|
||||
mem = mmap(0, sz_anon[SZ_INDEX], PROT_READ | PROT_WRITE,
|
||||
|
||||
@ -6,7 +6,6 @@
|
||||
#include <sys/syscall.h> /* For SYS_xxx definitions */
|
||||
#include "util.h"
|
||||
#include "ihklib.h"
|
||||
#include "mckernel/ihklib_rusage.h"
|
||||
|
||||
#define DEBUG
|
||||
|
||||
@ -23,7 +22,7 @@ int main(int argc, char **argv)
|
||||
{
|
||||
int i, j, ret = 0;
|
||||
void *mem;
|
||||
struct mckernel_rusage rusage;
|
||||
struct ihk_os_rusage rusage;
|
||||
pid_t pid;
|
||||
int status;
|
||||
|
||||
|
||||
@ -7,7 +7,6 @@
|
||||
#include <fcntl.h>
|
||||
#include "util.h"
|
||||
#include "ihklib.h"
|
||||
#include "mckernel/ihklib_rusage.h"
|
||||
|
||||
#define DEBUG
|
||||
|
||||
@ -25,7 +24,7 @@ int main(int argc, char **argv)
|
||||
int i, j, ret = 0;
|
||||
void *mem;
|
||||
int fd;
|
||||
struct mckernel_rusage rusage;
|
||||
struct ihk_os_rusage rusage;
|
||||
|
||||
fd = open("./file", O_RDWR);
|
||||
CHKANDJUMP(fd == -1, 255, "open failed\n");
|
||||
|
||||
@ -4,7 +4,6 @@
|
||||
#include <sys/syscall.h> /* For SYS_xxx definitions */
|
||||
#include "util.h"
|
||||
#include "ihklib.h"
|
||||
#include "mckernel/ihklib_rusage.h"
|
||||
|
||||
#define DEBUG
|
||||
|
||||
@ -21,7 +20,7 @@ int main(int argc, char **argv)
|
||||
{
|
||||
int i, j, ret = 0;
|
||||
void *mem;
|
||||
struct mckernel_rusage rusage;
|
||||
struct ihk_os_rusage rusage;
|
||||
|
||||
for (j = 0; j < NLOOP; j++) {
|
||||
mem = mmap(0, sz_anon[SZ_INDEX], PROT_READ | PROT_WRITE,
|
||||
|
||||
@ -4,7 +4,6 @@
|
||||
#include <unistd.h>
|
||||
#include <errno.h>
|
||||
#include "ihklib.h"
|
||||
#include "mckernel/ihklib_rusage.h"
|
||||
#include "util.h"
|
||||
|
||||
#define DELAY0 (100UL * 1000 * 1000)
|
||||
@ -15,7 +14,7 @@
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int ret = 0;
|
||||
struct mckernel_rusage rusage;
|
||||
struct ihk_os_rusage rusage;
|
||||
|
||||
if ((ret = ihk_os_getrusage(0, &rusage, sizeof(rusage)))) {
|
||||
fprintf(stderr, "%s: ihk_os_getrusage failed\n", __func__);
|
||||
|
||||
@ -18,8 +18,7 @@
|
||||
|
||||
#include <ihklib.h>
|
||||
#include <ihk/ihk_host_user.h>
|
||||
#undef IHK_MAX_NUM_NUMA_NODES
|
||||
#include <ihklib_rusage.h> // mckernel_rusage is defined here
|
||||
#include <ihk/ihk_rusage.h> // ihk_os_rusage is defined here
|
||||
|
||||
#define MAX_CPUS 256
|
||||
#define MiB100 (100*1024*1024) // 100 MiB
|
||||
@ -29,7 +28,7 @@
|
||||
#define UPDATE_COUNTER(c) (c = (c + 1) % 10)
|
||||
|
||||
struct my_rusage {
|
||||
struct mckernel_rusage rusage;
|
||||
struct ihk_os_rusage rusage;
|
||||
|
||||
/* Initial amount posted to allocator. Note that the amount
|
||||
* used before the initialization is not included.
|
||||
@ -137,7 +136,7 @@ mygetrusage(int idx, struct my_rusage *rbp)
|
||||
unsigned long *memtotal = NULL;
|
||||
|
||||
rc = ihk_os_getrusage(idx, &rbp->rusage,
|
||||
sizeof(struct mckernel_rusage));
|
||||
sizeof(struct ihk_os_rusage));
|
||||
if (rc) {
|
||||
printf("%s: error: ihk_os_getrusage: %s\n",
|
||||
__func__, strerror(-rc));
|
||||
|
||||
Reference in New Issue
Block a user