Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 6667321dc1 | |||
| f849745b60 | |||
| 78bc06d998 | |||
| d726bd3d11 | |||
| df37d6867f | |||
| a4b5410d0c |
@ -10,7 +10,7 @@ project(mckernel C ASM)
|
|||||||
set(MCKERNEL_VERSION "1.7.1")
|
set(MCKERNEL_VERSION "1.7.1")
|
||||||
|
|
||||||
# See "Fedora Packaging Guidelines -- Versioning"
|
# See "Fedora Packaging Guidelines -- Versioning"
|
||||||
set(MCKERNEL_RELEASE "0.4")
|
set(MCKERNEL_RELEASE "0.6")
|
||||||
|
|
||||||
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules)
|
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules)
|
||||||
# for rpmbuild
|
# for rpmbuild
|
||||||
@ -64,14 +64,13 @@ if(ENABLE_TOFU)
|
|||||||
set(KBUILD_C_FLAGS "${KBUILD_C_FLAGS} -DENABLE_TOFU")
|
set(KBUILD_C_FLAGS "${KBUILD_C_FLAGS} -DENABLE_TOFU")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# when compiling on a compute-node
|
||||||
execute_process(COMMAND bash -c "grep $(hostname) /etc/opt/FJSVfefs/config/fefs_node1.csv 2>/dev/null | cut -d, -f2"
|
execute_process(COMMAND bash -c "grep $(hostname) /etc/opt/FJSVfefs/config/fefs_node1.csv 2>/dev/null | cut -d, -f2"
|
||||||
OUTPUT_VARIABLE FUGAKU_NODE_TYPE OUTPUT_STRIP_TRAILING_WHITESPACE)
|
OUTPUT_VARIABLE FUGAKU_NODE_TYPE OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
if(FUGAKU_NODE_TYPE STREQUAL "CN")
|
if(FUGAKU_NODE_TYPE STREQUAL "CN")
|
||||||
option(ENABLE_FUGAKU_HACKS "Fugaku hacks" ON)
|
option(ENABLE_FUGAKU_HACKS "Fugaku hacks" ON)
|
||||||
option(ENABLE_FUGAKU_DEBUG "Fugaku debug instrumentation" ON)
|
|
||||||
else()
|
else()
|
||||||
option(ENABLE_FUGAKU_HACKS "Fugaku hacks" OFF)
|
option(ENABLE_FUGAKU_HACKS "Fugaku hacks" OFF)
|
||||||
option(ENABLE_FUGAKU_DEBUG "Fugaku debug instrumentation" OFF)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(ENABLE_FUGAKU_HACKS)
|
if(ENABLE_FUGAKU_HACKS)
|
||||||
@ -79,11 +78,20 @@ if(ENABLE_FUGAKU_HACKS)
|
|||||||
set(KBUILD_C_FLAGS "${KBUILD_C_FLAGS} -DENABLE_FUGAKU_HACKS")
|
set(KBUILD_C_FLAGS "${KBUILD_C_FLAGS} -DENABLE_FUGAKU_HACKS")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# SIGSTOP instead of SIGSEGV, additional IHK Linux kmsg
|
||||||
|
option(ENABLE_FUGAKU_DEBUG "Fugaku debug instrumentation" OFF)
|
||||||
|
|
||||||
if(ENABLE_FUGAKU_DEBUG)
|
if(ENABLE_FUGAKU_DEBUG)
|
||||||
add_definitions(-DENABLE_FUGAKU_DEBUG)
|
add_definitions(-DENABLE_FUGAKU_DEBUG)
|
||||||
set(KBUILD_C_FLAGS "${KBUILD_C_FLAGS} -DENABLE_FUGAKU_DEBUG")
|
set(KBUILD_C_FLAGS "${KBUILD_C_FLAGS} -DENABLE_FUGAKU_DEBUG")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
option(PROFILE_ENABLE "System call profile" ON)
|
||||||
|
if(PROFILE_ENABLE)
|
||||||
|
add_definitions(-DPROFILE_ENABLE)
|
||||||
|
set(KBUILD_C_FLAGS "${KBUILD_C_FLAGS} -DPROFILE_ENABLE")
|
||||||
|
endif()
|
||||||
|
|
||||||
option(ENABLE_LINUX_WORK_IRQ_FOR_IKC "Use Linux work IRQ for IKC IPI" ON)
|
option(ENABLE_LINUX_WORK_IRQ_FOR_IKC "Use Linux work IRQ for IKC IPI" ON)
|
||||||
if (ENABLE_LINUX_WORK_IRQ_FOR_IKC)
|
if (ENABLE_LINUX_WORK_IRQ_FOR_IKC)
|
||||||
set(KBUILD_C_FLAGS "${KBUILD_C_FLAGS} -DIHK_IKC_USE_LINUX_WORK_IRQ")
|
set(KBUILD_C_FLAGS "${KBUILD_C_FLAGS} -DIHK_IKC_USE_LINUX_WORK_IRQ")
|
||||||
@ -289,6 +297,7 @@ message("ENABLE_PERF: ${ENABLE_PERF}")
|
|||||||
message("ENABLE_TOFU: ${ENABLE_TOFU}")
|
message("ENABLE_TOFU: ${ENABLE_TOFU}")
|
||||||
message("ENABLE_FUGAKU_HACKS: ${ENABLE_FUGAKU_HACKS}")
|
message("ENABLE_FUGAKU_HACKS: ${ENABLE_FUGAKU_HACKS}")
|
||||||
message("ENABLE_FUGAKU_DEBUG: ${ENABLE_FUGAKU_DEBUG}")
|
message("ENABLE_FUGAKU_DEBUG: ${ENABLE_FUGAKU_DEBUG}")
|
||||||
|
message("PROFILE_ENABLE: ${PROFILE_ENABLE}")
|
||||||
message("ENABLE_RUSAGE: ${ENABLE_RUSAGE}")
|
message("ENABLE_RUSAGE: ${ENABLE_RUSAGE}")
|
||||||
message("ENABLE_QLMPI: ${ENABLE_QLMPI}")
|
message("ENABLE_QLMPI: ${ENABLE_QLMPI}")
|
||||||
message("ENABLE_UTI: ${ENABLE_UTI}")
|
message("ENABLE_UTI: ${ENABLE_UTI}")
|
||||||
|
|||||||
@ -124,7 +124,7 @@ SYSCALL_HANDLED(271, process_vm_writev)
|
|||||||
SYSCALL_HANDLED(281, execveat)
|
SYSCALL_HANDLED(281, execveat)
|
||||||
SYSCALL_HANDLED(700, get_cpu_id)
|
SYSCALL_HANDLED(700, get_cpu_id)
|
||||||
#ifdef PROFILE_ENABLE
|
#ifdef PROFILE_ENABLE
|
||||||
SYSCALL_HANDLED(__NR_profile, profile)
|
SYSCALL_HANDLED(PROFILE_EVENT_MAX, profile)
|
||||||
#endif // PROFILE_ENABLE
|
#endif // PROFILE_ENABLE
|
||||||
SYSCALL_HANDLED(730, util_migrate_inter_kernel)
|
SYSCALL_HANDLED(730, util_migrate_inter_kernel)
|
||||||
SYSCALL_HANDLED(731, util_indicate_clone)
|
SYSCALL_HANDLED(731, util_indicate_clone)
|
||||||
|
|||||||
@ -168,7 +168,7 @@ SYSCALL_HANDLED(311, process_vm_writev)
|
|||||||
SYSCALL_HANDLED(322, execveat)
|
SYSCALL_HANDLED(322, execveat)
|
||||||
SYSCALL_HANDLED(700, get_cpu_id)
|
SYSCALL_HANDLED(700, get_cpu_id)
|
||||||
#ifdef PROFILE_ENABLE
|
#ifdef PROFILE_ENABLE
|
||||||
SYSCALL_HANDLED(__NR_profile, profile)
|
SYSCALL_HANDLED(PROFILE_EVENT_MAX, profile)
|
||||||
#endif // PROFILE_ENABLE
|
#endif // PROFILE_ENABLE
|
||||||
SYSCALL_HANDLED(730, util_migrate_inter_kernel)
|
SYSCALL_HANDLED(730, util_migrate_inter_kernel)
|
||||||
SYSCALL_HANDLED(731, util_indicate_clone)
|
SYSCALL_HANDLED(731, util_indicate_clone)
|
||||||
|
|||||||
@ -183,3 +183,9 @@ Limitations
|
|||||||
|
|
||||||
26. mmap() allows unlimited overcommit. Note that it corresponds to
|
26. mmap() allows unlimited overcommit. Note that it corresponds to
|
||||||
setting sysctl ``vm.overcommit_memory`` to 1.
|
setting sysctl ``vm.overcommit_memory`` to 1.
|
||||||
|
|
||||||
|
27. mlockall() is not supported and returns -EPERM.
|
||||||
|
|
||||||
|
28. munlockall() is not supported and returns zero.
|
||||||
|
|
||||||
|
29. scheduling behavior is not Linux compatible. For example, sometimes one of the two processes on the same CPU continues to run after yielding.
|
||||||
|
|||||||
2
ihk
2
ihk
Submodule ihk updated: 675ab08a3c...6e051eed9c
@ -1,9 +1,6 @@
|
|||||||
#ifndef __PROCESS_PROFILE_H_
|
#ifndef __PROCESS_PROFILE_H_
|
||||||
#define __PROCESS_PROFILE_H_
|
#define __PROCESS_PROFILE_H_
|
||||||
|
|
||||||
/* Uncomment this to enable profiling */
|
|
||||||
#define PROFILE_ENABLE
|
|
||||||
|
|
||||||
#ifdef PROFILE_ENABLE
|
#ifdef PROFILE_ENABLE
|
||||||
#define PROFILE_SYSCALL_MAX 2000
|
#define PROFILE_SYSCALL_MAX 2000
|
||||||
#define PROFILE_OFFLOAD_MAX (PROFILE_SYSCALL_MAX << 1)
|
#define PROFILE_OFFLOAD_MAX (PROFILE_SYSCALL_MAX << 1)
|
||||||
@ -58,8 +55,6 @@ enum profile_event_type {
|
|||||||
PROFILE_EVENT_MAX /* Should be the last event type */
|
PROFILE_EVENT_MAX /* Should be the last event type */
|
||||||
};
|
};
|
||||||
|
|
||||||
#define __NR_profile PROFILE_EVENT_MAX
|
|
||||||
|
|
||||||
#ifdef __KERNEL__
|
#ifdef __KERNEL__
|
||||||
struct thread;
|
struct thread;
|
||||||
struct process;
|
struct process;
|
||||||
@ -79,6 +74,8 @@ void profile_dealloc_proc_events(struct process *proc);
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <sys/syscall.h>
|
#include <sys/syscall.h>
|
||||||
|
|
||||||
|
#define __NR_profile PROFILE_EVENT_MAX
|
||||||
|
|
||||||
/* Per-thread */
|
/* Per-thread */
|
||||||
static inline void mckernel_profile_thread_on(void)
|
static inline void mckernel_profile_thread_on(void)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -20,6 +20,7 @@
|
|||||||
#include <ihk/ikc.h>
|
#include <ihk/ikc.h>
|
||||||
#include <rlimit.h>
|
#include <rlimit.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
#include <profile.h>
|
||||||
|
|
||||||
#define NUM_SYSCALLS 255
|
#define NUM_SYSCALLS 255
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user