Compare commits

...

14 Commits

Author SHA1 Message Date
239b1b265f release 1.7.0
Change-Id: I8413aa2d051c6164235816bae2823187870efe49
2020-11-25 10:51:40 +09:00
f646fd141b prerelase 0.96: ihk_reserve_mem: balanced, capped best effort
Change-Id: Ia98c87e651d8dd34dfd36bc0c45f1d23e245330d
2020-11-24 03:40:01 +00:00
734d1cc056 ihk submodule update: ihklib: ihk_create_os_str: add ihk_reserve_mem_conf equivalent
Change-Id: Iede1a043b0316d6541656e86091f2288fd299383
2020-11-24 03:40:01 +00:00
040a9c0c7f cmake: set QEMU_LD_PREFIX when cross-compiling
Change-Id: Ie7b86ddba344e02d6f739225e44f3ad4927f5a2f
2020-11-20 07:59:55 +00:00
8784ee4710 spec: prerelase 0.95 for testing /dev/mcosN related fix
Change-Id: I02397984cd5c4c3a3e83968ff03cf9a68e84d200
2020-09-07 16:12:09 +09:00
3a761c138e ihk submodule update: ihklib, ihkmond: fix /dev/mcosN related issues
Change-Id: I533b277f249dc4afc84929dd2bf22c19648e21d1
2020-09-07 16:11:36 +09:00
e21a3a5af3 spec: prerelase 0.94 for testing ihk_create_os_str
Change-Id: If30f6ccf269dbdbbd564498318b741a88d46a2a1
2020-09-04 12:04:01 +09:00
cd33c88025 ihk submodule update: ihklib: turn off debug messages
Change-Id: I9adc4843bd4e2d2606e0100f855c83b47a144863
2020-09-04 12:03:58 +09:00
d78a0fb74c docs: NEWS.rst: add 1.7.0-0.93 updates
Change-Id: If4f41f6d26c2da60711568f02444cf033d82a3d5
2020-09-02 01:47:20 +00:00
9f815324a4 spec: prerelase 0.93 for testing ihk_create_os_str
Change-Id: Id31646c88da0640a3d58e7805fa61f0e0583ff1c
2020-09-01 15:53:10 +09:00
2748f06c1f ihk submodule update: ihklib: add ihk_create_os_str
Change-Id: Ia219a4463562de3b9d94f8b57ba52ff19f07e721
2020-09-01 15:06:32 +09:00
a7f892113a spec: prerelase 0.92 for testing RHEL-8.3 compat
Change-Id: Ie4dbfb253aa3ddd384ed1ad481e87e5f0e042e03
2020-08-31 02:11:09 -04:00
89c696afc5 ihk submodule update: gic_chip_data: compat: RHEL-8.3
Change-Id: Ibdf67f012d66c01ed3f6a486624e6a32a42ba0e7
2020-08-31 02:04:34 -04:00
e17e86840b docs: switch to https://ihkmckernel.readthedocs.io and add contents
Change-Id: I9515034ac372dbe554e1010f646b382c5dc94458
2020-08-19 12:44:03 +09:00
61 changed files with 7843 additions and 833 deletions

View File

@ -9,8 +9,8 @@ enable_language(C ASM)
project(mckernel C ASM)
set(MCKERNEL_VERSION "1.7.0")
# See "Fedora Packaging Guidlines -- Versioning"
set(MCKERNEL_RELEASE "0.91")
# See "Fedora Packaging Guidelines -- Versioning"
set(MCKERNEL_RELEASE "1")
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules)
# for rpmbuild

540
NEWS.md
View File

@ -1,540 +0,0 @@
=============================================
What's new in version 1.7.0rc4 (Apr 15, 2020)
=============================================
----------------------
McKernel major updates
----------------------
1. arm64: Contiguous PTE support
2. arm64: Scalable Vector Extension (SVE) support
3. arm64: PMU overflow interrupt support
4. xpmem: Support large page attachment
5. arm64 port: Direct access to Mckernel memory from Linux
6. arm64 port: utility thread offloading, which spawns thread onto
Linux CPU
7. eclair: support for live debug
8. Crash utility extension
9. Replace mcoverlayfs with a soft userspace overlay
10. Build system is switched to cmake
11. Core dump includes thread information
------------------------
McKernel major bug fixes
------------------------
1. shmobj: Fix rusage counting for large page
2. mcctrl control: task start_time changed to u64 nsec
3. mcctrl: add handling for one more level of page tables
4. Add kernel argument to turn on/off time sharing
5. flatten_string/process env: realign env and clear trailing bits
6. madvise: Add MADV_HUGEPAGE support
8. mcctrl: remove in-kernel calls to syscalls
9. arch_cpu_read_write_register: error return fix.
10. set_cputime(): interrupt enable/disable fix.
11. set_mempolicy(): Add mode check.
12. mbind(): Fix memory_range_lock deadlock.
13. ihk_ikc_recv: Record channel to packet for release
14. Add set_cputime() kernel to kernel case and mode enum.
15. execve: Call preempt_enable() before error-exit
16. memory/x86_64: fix linux safe_kernel_map
17. do_kill(): fix pids table when nr of threads is larger than num_processors
18. shmget: Use transparent huge pages when page size isn't specified
19. prctl: Add support for PR_SET_THP_DISABLE and PR_GET_THP_DISABLE
20. monitor_init: fix undetected hang on highest numbered core
21. init_process_stack: change premapped stack size based on arch
22. x86 syscalls: add a bunch of XXat() delegated syscalls
23. do_pageout: fix direct kernel-user access
24. stack: add hwcap auxval
25. perf counters: add arch-specific perf counters
26. Added check of nohost to terminate_host().
27. kmalloc: Fix address order in free list
28. sysfs: use nr_cpu_ids for cpumasks (fixes libnuma parsing error on ARM)
29. monitor_init: Use ihk_mc_cpu_info()
30. Fix ThunderX2 write-combined PTE flag insanity
31. ARM: eliminate zero page mapping (i.e, init_low_area())
32. eliminate futex_cmpxchg_enabled check (not used and dereffed a NULL pointer)
33. page_table: Fix return value of lookup_pte when ptl4 is blank
34. sysfs: add missing symlinks for cpu/node
35. Make Linux handler run when mmap to procfs.
36. Separate mmap area from program loading (relocation) area
37. move rusage into kernel ELF image (avoid dynamic alloc before NUMA init)
38. arm: turn off cpu on panic
39. page fault handler: protect thread accesses
40. Register PPD and release_handler at the same time.
41. fix to missing exclusive processing between terminate() and
finalize_process().
42. perfctr_stop: add flags to no 'disable_intens'
43. fileobj, shmobj: free pages in object destructor (as opposed to page_unmap())
44. clear_range_l1, clear_range_middle: Fix handling contiguous PTE
45. do_mmap: don't pre-populate the whole file when asked for smaller segment
46. invalidate_one_page: Support shmobj and contiguous PTE
47. ubsan: fix undefined shifts
48. x86: disable zero mapping and add a boot pt for ap trampoline
49. rusage: Don't count PF_PATCH change
50. Fixed time processing.
51. copy_user_pte: vmap area not owned by McKernel
52. gencore: Zero-clear ELF header and memory range table
53. rpm: ignore CMakeCache.txt in dist and relax BuildRequires on cross build
54. gencore: Allocate ELF header to heap instead of stack
55. nanosleep: add cpu_pause() in spinwait loop
56. init_process: add missing initializations to proc struct
57. rus_vm_fault: always use a packet on the stack
58. process stack: use PAGE_SIZE in aux vector
59. copy_user_pte: base memobj copy on range & VR_PRIVATE
60. arm64: ptrace: Fix overwriting 1st argument with return value
61. page fault: use cow for private device mappings
62. reproductible builds: remove most install paths in c code
63. page fault: clear writable bit for non-dirtying access to shared ranges
64. mcreboot/mcstop+release: support for regular user execution
65. irqbalance_mck: replace extra service with service drop-in
66. do_mmap: give addr argument a chance even if not MAP_FIXED
67. x86: fix xchg() and cmpxchg() macros
68. IHK: support for using Linux work IRQ as IKC interrupt (optional)
69. MCS: fix ARM64 issue by using smp_XXX() functions (i.e., barrier()s)
70. procfs: add number of threads to stat and status
71. memory_range_lock: Fix deadlock in procfs/sysfs handler
72. flush instruction cache at context switch time if necessary
73. arm64: Fix PMU related functions
74. page_fault_process_memory_range: Disable COW for VM region with zeroobj
75. extend_process_region: Fall back to demand paging when not contiguous
76. munmap: fix deadlock with remote pagefault on vm range lock
77. procfs: if memory_range_lock fails, process later
78. migrate-cpu: Prevent migration target from calling schedule() twice
79. sched_request_migrate(): fix race condition between migration req and IRQs
80. get_one_cpu_topology: Renumber core_id (physical core id)
81. bb7e140 procfs cpuinfo: use sequence number as processor
82. set_host_vma(): do NOT read protect Linux VMA
===========================================
What's new in V1.6.0 (Nov 11, 2018)
===========================================
-----------------------------------------------
McKernel new features, improvements and changes
-----------------------------------------------
1. McKernel and Linux share one unified kernel virtual address space.
That is, McKernel sections resides in Linux sections spared for
modules. In this way, Linux can access the McKernel kernel memory
area.
2. hugetlbfs support
3. IHK is now included as a git submodule
4. Debug messages are turned on/off in per souce file basis at run-time.
5. It's prohibited for McKernel to access physical memory ranges which
Linux didn't give to McKernel.
6. UTI (capability to spawn a thread on Linux CPU) improvement:
* System calls issued from the thread are hooked by modifying
binary in memory.
---------------------------
McKernel bug fixes (digest)
---------------------------
#<num> below corresponds to the redmine issue number
(https://postpeta.pccluster.org/redmine/).
1. #926: shmget: Hide object with IPC_RMID from shmget
2. #1028: init_process: Inherit parent cpu_set
3. #995: Fix shebang recorded in argv[0]
4. #1024: Fix VMAP virtual address leak
5. #1109: init_process_stack: Support "ulimit -s unlimited"
6. x86 mem init: do not map identity mapping
7. mcexec_wait_syscall: requeue potential request on interrupted wait
8. mcctrl_ikc_send_wait: fix interrupt with do_frees == NULL
9. pager_req_read: handle short read
10. kprintf: only call eventfd() if it is safe to interrupt
11. process_procfs_request: Add Pid to /proc/<PID>/status
12. terminate: fix oversubscribe hang when waiting for other threads on same CPU to die
13. mcexec: Do not close fd returned to mckernel side
14. #976: execve: Clear sigaltstack and fp_regs
15. #1002: perf_event: Specify counter by bit_mask on start/stop
16. #1027: schedule: Don't reschedule immediately when wake up on migrate
17. #mcctrl: lookup unexported symbols at runtime
18. __sched_wakeup_thread: Notify interrupt_exit() of re-schedule
19. futex_wait_queue_me: Spin-sleep when timeout and idle_halt is specified
20. #1167: ihk_os_getperfevent,setperfevent: Timeout IKC sent by mcctrl
21. devobj: fix object size (POSTK_DEBUG_TEMP_FIX_36)
22. mcctrl: remove rus page cache
23. #1021: procfs: Support multiple reads of e.g. /proc/*/maps
24. #1006: wait: Delay wake-up parent within switch context
25. #1164: mem: Check if phys-mem is within the range of McKernel memory
26. #1039: page_fault_process_memory_range: Remove ihk_mc_map_virtual for CoW of device map
27. partitioned execution: pass process rank to LWK
28. process/vm: implement access_ok()
29. spinlock: rewrite spinlock to use Linux ticket head/tail format
30. #986: Fix deadlock involving mmap_sem and memory_range_lock
31. Prevent one CPU from getting chosen by concurrent forks
32. #1009: check_signal: system call restart is done only once
33. #1176: syscall: the signal received during system call processing is not processed.
34. #1036 syscall_time: Handle by McKernel
35. #1165 do_syscall: Delegate system calls to the mcexec with the same pid
36. #1194 execve: Fix calling ptrace_report_signal after preemption is disabled
37. #1005 coredump: Exclude special areas
38. #1018 procfs: Fix pread/pwrite to procfs fail when specified size is bigger than 4MB
39. #1180 sched_setaffinity: Check migration after decrementing in_interrupt
40. #771, #1179, #1143 ptrace supports threads
41. #1189 procfs/do_fork: wait until procfs entries are registered
42. #1114 procfs: add '/proc/pid/stat' to mckernel side and fix its comm
43. #1116 mcctrl procfs: check entry was returned before using it
44. #1167 ihk_os_getperfevent,setperfevent: Return -ETIME when IKC timeouts
45. mcexec/execve: fix shebangs handling
46. procfs: handle 'comm' on mckernel side
47. ihk_os_setperfevent: Return number of registered events
48. mcexec: fix terminating zero after readlink()
===========================================
What's new in V1.5.1 (July 9, 2018)
===========================================
-----------------------------------------------
McKernel new features, improvements and changes
-----------------------------------------------
1. Watchdog timer to detect hang of McKernel
mcexec prints out the following line to its stderr when a hang of
McKernel is detected.
mcexec detected hang of McKernel
The watchdog timer is enabled by passing -i <timeout_in_sec> option
to mcreboot.sh. <timeout_in_sec> specifies the interval of checking
if McKernel is alive.
Example: mcreboot.sh -i 600: Detect the hang with 10 minutes interval
The detailed step of the hang detection is as follows.
(1) mcexec acquires eventfd for notification from IHK and perform
epoll() on it.
(2) A daemon called ihkmond monitors the state of McKernel periodically
with the interval specified by the -i option. It judges that
McKernel is hanging and notifies mcexec by the eventfd if its
state hasn't changed since the last check.
2. Documentation
man page: Installed directory is changed to <install_dir>/share/man
---------------------------
McKernel bug fixes (digest)
---------------------------
1. #1146: pager_req_map(): do not take mmap_sem if not needed
2. #1135: prepare_process_ranges_args_envs(): fix saving cmdline
3. #1144: fileobj/devobj: record path name
4. #1145: fileobj: use MCS locks for per-file page hash
5. #1076: mcctrl: refactor prepare_image into new generic ikc send&wait
6. #1072: execve: fix execve with oversubscribing
7. #1132: execve: use thread variable instead of cpu_local_var(current)
8. #1117: mprotect: do not set page table writable for cow pages
9. #1143: syscall wait4: add _WALL (POSTK_DEBUG_ARCH_DEP_44)
10. #1064: rusage: Fix initialization of rusage->num_processors
11. #1133: pager_req_unmap: Put per-process data at exit
12. #731: do_fork: Propagate error code returned by mcexec
13. #1149: execve: Reinitialize vm_regions's map area on execve
14. #1065: procfs: Show file names in /proc/<PID>/maps
15. #1112: mremap: Fix type of size arguments (from ssize_t to size_t)
16. #1121: sched_getaffinity: Check arguments in the same order as in Linux
17. #1137: mmap, mremap: Check arguments in the same order as in Linux
18. #1122: fix return value of sched_getaffinity
19. #732: fix: /proc/<PID>/maps outputs a unnecessary NULL character
===================================
What's new in V1.5.0 (Apr 5, 2018)
===================================
--------------------------------------
McKernel new features and improvements
--------------------------------------
1. Aid for Linux version migration: Detect /proc, /sys format change
between two kernel verions
2. Swap out
* Only swap-out anonymous pages for now
3. Improve support of /proc/maps
4. mcstat: Linux tool to show resource usage
---------------------------
McKernel bug fixes (digest)
---------------------------
1. #727: execve: Fix memory leak when receiving SIGKILL
2. #829: perf_event_open: Support PERF_TYPE_HARDWARE and PERF_TYPE_HW_CACHE
3. #906: mcexec: Check return code of fork()
4. #1038: mcexec: Timeout when incorrect value is given to -n option
5. #943 #945 #946 #960 $961: mcexec: Support strace
6. #1029: struct thread is not released with stress-test involving signal
and futex
7. #863 #870: Respond immediately to terminating signal when
offloading system call
8. #1119: translate_rva_to_rpa(): use 2MB blocks in 1GB pages on x86
11. #898: Shutdown OS only after no in-flight IKC exist
12. #882: release_handler: Destroy objects as the process which opened it
13. #882: mcexec: Make child process exit if the parent is killed during
fork()
14. #925: XPMEM: Don't destroy per-process object of the parent
15. #885: ptrace: Support the case where a process attaches its child
16. #1031: sigaction: Support SA_RESETHAND
17. #923: rus_vm_fault: Return error when a thread not performing
system call offloading causes remote page fault
18. #1032 #1033 #1034: getrusage: Fix ru_maxrss, RUSAGE_CHILDREN,
ru_stime related bugs
19. #1120: getrusage: Fix deadlock on thread->times_update
20. #1123: Fix deadlock related to wait_queue_head_list_node
21. #1124: Fix deadlock of calling terminate() from terminate()
22. #1125: Fix deadlock related to thread status
* Related functions are: hold_thread(), do_kill() and terminate()
23. #1126: uti: Fix uti thread on the McKernel side blocks others in do_syscall()
24. #1066: procfs: Show Linux /proc/self/cgroup
25. #1127: prepare_process_ranges_args_envs(): fix generating saved_cmdline to
avoid PF in strlen()
26. #1128: ihk_mc_map/unmap_virtual(): do proper TLB invalidation
27. #1043: terminate(): fix update_lock and threads_lock order to avoid deadlock
28. #1129: mcreboot.sh: Save /proc/irq/*/smp_affinity to /tmp/mcreboot
29. #1130: mcexec: drop READ_IMPLIES_EXEC from personality
--------------------
McKernel workarounds
--------------------
1. Forbid CPU oversubscription
* It can be turned on by mcreboot.sh -O option
===================================
What's new in V1.4.0 (Oct 30, 2017)
===================================
-----------------------------------------------------------
Feature: Abstracted event type support in perf_event_open()
-----------------------------------------------------------
PERF_TYPE_HARDWARE and PERF_TYPE_CACHE types are supported.
----------------------------------
Clean-up: Direct user-space access
----------------------------------
Code lines using direct user-space access (e.g. passing user-space
pointer to memcpy()) becomes more portable across processor
architectures. The modification follows the following rules.
1. Move the code section as it is to the architecture dependent
directory if it is a part of the critical-path.
2. Otherwise, rewrite the code section by using the portable methods.
The methods include copy_from_user(), copy_to_user(),
pte_get_phys() and phys_to_virt().
--------------------------------
Test: MPI and OpenMP micro-bench
--------------------------------
The performance figures of MPI and OpenMP primitives are compared with
those of Linux by using Intel MPI Benchmarks and EPCC OpenMP Micro
Benchmark.
===================================
What's new in V1.3.0 (Sep 30, 2017)
===================================
--------------------
Feature: Kernel dump
--------------------
1. A dump level of "only kernel memory" is added.
The following two levels are available now:
0: Dump all
24: Dump only kernel memory
The dump level can be set by -d option in ihkosctl or the argument
for ihk_os_makedumpfile(), as shown in the following examples:
Command: ihkosctl 0 dump -d 24
Function call: ihk_os_makedumpfile(0, NULL, 24, 0);
2. Dump file is created when Linux panics.
The dump level can be set by dump_level kernel argument, as shown in the
following example:
ihkosctl 0 kargs "hidos dump_level=24"
The IHK dump function is registered to panic_notifier_list when creating
/dev/mcdX and called when Linux panics.
-----------------------------
Feature: Quick Process Launch
-----------------------------
MPI process launch time and some of the initialization time can be
reduced in application consisting of multiple MPI programs which are
launched in turn in the job script.
The following two steps should be performed to use this feature:
1. Replace mpiexec with ql_mpiexec_start and add some lines for
ql_mpiexec_finalize in the job script
2. Modify the app so that it can repeat calculations and wait for the
instructions from ql_mpiexec_{start,finalize} at the end of the
loop
The first step is explained using an example. Assume the original job
script looks like this:
/* Execute ensamble simulation and then data assimilation, and repeat this
ten times */
for i in {1..10}; do
/* Each ensamble simulation execution uses 100 nodes, launch ten of them
in parallel */
for j in {1..10}; do
mpiexec -n 100 -machinefile ./list1_$j p1.out a1 & pids[$i]=$!;
done
/* Wait until the ten ensamble simulation programs finish */
for j in {1..10}; do wait ${pids[$j]}; done
/* Launch one data assimilation program using 1000 nodes */
mpiexec -n 1000 -machinefile ./list2 p2.out a2
done
The job script should be modified like this:
for i in {1..10}; do
for j in {1..10}; do
/* Replace mpiexec with ql_mpiexec_start */
ql_mpiexec_start -n 100 -machinefile ./list1_$j p1.out a1 & pids[$j]=$!;
done
for j in {1..10}; do wait ${pids[$j]}; done
ql_mpiexec_start -n 1000 -machinefile ./list2 p2.out a2
done
/* p1.out and p2.out don't exit but are waiting for the next calculation.
So tell them to exit */
for j in {1..10}; do
ql_mpiexec_finalize -machinefile ./list1_$i p1.out a1;
done
ql_mpiexec_finalize -machinefile ./list2 p2.out a2;
The second step is explained using a pseudo-code.
MPI_Init();
Prepare data exchange with preceding / following MPI programs
loop:
foreach Fortran module
Initialize data using command-line argments, parameter files,
environment variables
Input data from preceding MPI programs / Read snap-shot
Perform main calculation
Output data to following MPI programs / Write snap-shot
/* ql_client() waits for command of ql_mpiexec_{start,finish} */
if (ql_client() == QL_CONTINUE) { goto loop; }
MPI_Finalize();
qlmpilib.h should be included in the code and libql{mpi,fort}.so
should be linked to the executable file.
========================
Restrictions on McKernel
========================
1. Pseudo devices such as /dev/mem and /dev/zero are not mmap()ed
correctly even if the mmap() returns a success. An access of their
mapping receives the SIGSEGV signal.
2. clone() supports only the following flags. All the other flags
cause clone() to return error or are simply ignored.
* CLONE_CHILD_CLEARTID
* CLONE_CHILD_SETTID
* CLONE_PARENT_SETTID
* CLONE_SETTLS
* CLONE_SIGHAND
* CLONE_VM
3. PAPI has the following restriction.
* Number of counters a user can use at the same time is up to the
number of the physical counters in the processor.
4. msync writes back only the modified pages mapped by the calling process.
5. The following syscalls always return the ENOSYS error.
* migrate_pages()
* move_pages()
* set_robust_list()
6. The following syscalls always return the EOPNOTSUPP error.
* arch_prctl(ARCH_SET_GS)
* signalfd()
7. signalfd4() returns a fd, but signal is not notified through the
fd.
8. set_rlimit sets the limit values but they are not enforced.
9. Address randomization is not supported.
10. brk() extends the heap more than requestd when -h
(--extend-heap-by=)<step> option of mcexec is used with the value
larger than 4 KiB. syscall_pwrite02 of LTP would fail for this
reason. This is because the test expects that the end of the heap
is set to the same address as the argument of sbrk() and expects a
segmentation violation occurs when it tries to access the memory
area right next to the boundary. However, the optimization sets
the end to a value larger than the requested. Therefore, the
expected segmentation violation doesn't occur.
11. setpriority()/getpriority() won't work. They might set/get the
priority of a random mcexec thread. This is because there's no
fixed correspondence between a McKernel thread which issues the
system call and a mcexec thread which handles the offload request.
12. mbind() can set the policy but it is not used when allocating
physical pages.
13. MPOL_F_RELATIVE_NODES and MPOL_INTERLEAVE flags for
set_mempolicy()/mbind() are not supported.
14. The MPOL_BIND policy for set_mempolicy()/mbind() works as the same
as the MPOL_PREFERRED policy. That is, the physical page allocator
doesn't give up the allocation when the specified nodes are
running out of pages but continues to search pages in the other
nodes.
15. Kernel dump on Linux panic requires Linux kernel CentOS-7.4 and
later. In addition, crash_kexec_post_notifiers kernel argument
must be given to Linux kernel.
16. setfsuid()/setfsgid() cannot change the id of the calling thread.
Instead, it changes that of the mcexec worker thread which takes
the system-call offload request.
17. mmap (hugeTLBfs): The physical pages corresponding to a map are
released when no McKernel process exist. The next map gets fresh
physical pages.
18. Sticky bit on executable file has no effect.
19. Linux (RHEL-7 for x86_64) could hang when offlining CPUs in the
process of booting McKernel due to the Linux bug, found in
Linux-3.10 and fixed in the later version. One way to circumvent
this is to always assign the same CPU set to McKernel.
20. madvise:
* MADV_HWPOISON and MADV_SOFT_OFFLINE always returns -EPERM.
* MADV_MERGEABLE and MADV_UNMERGEABLE always returns -EINVAL.
* MADV_HUGEPAGE and MADV_NOHUGEPAGE on file map returns -EINVAL
(It succeeds on RHEL-8 for aarch64).
21. brk() and mmap() doesn't report out-of-memory through its return
value. Instead, page-fault reports the error.
22. Anonymous mmap pre-maps requested number of pages when contiguous
pages are available. Demand paging is used when not available.
23. Mixing page sizes in anonymous shared mapping is not allowed. mmap
creates vm_range with one page size. And munmap or mremap that
needs the reduced page size changes the sizes of all the pages of
the vm_range.
24. ihk_os_getperfevent() could time-out when invoked from Fujitsu TCS
(job-scheduler).
25. The behaviors of madvise and mbind are changed to do nothing and
report success as a workaround for Fugaku.
26. mmap() allows unlimited overcommit. Note that it corresponds to
setting sysctl ``vm.overcommit_memory`` to 1.

290
README.md
View File

@ -1,290 +0,0 @@
![McKernel Logo](https://www.sys.r-ccs.riken.jp/members_files/bgerofi/mckernel-logo.png)
-------------------------
IHK/McKernel is a light-weight multi-kernel operating system designed for high-end supercomputing. It runs Linux and McKernel, a light-weight kernel (LWK), side-by-side inside compute nodes and aims at the following:
- Provide scalable and consistent execution of large-scale parallel scientific applications, but at the same time maintain the ability to rapidly adapt to new hardware features and emerging programming models
- Provide efficient memory and device management so that resource contention and data movement are minimized at the system level
- Eliminate OS noise by isolating OS services in Linux and provide jitter free execution on the LWK
- Support the full POSIX/Linux APIs by selectively offloading (slow-path) system calls to Linux
## Contents
- [Background](#background-and-motivation)
- [Architectural Overview](#architectural-overview)
- [Installation](#installation)
- [The Team](#the-team)
## Background and Motivation
With the growing complexity of high-end supercomputers, the current system software stack faces significant challenges as we move forward to exascale and beyond. The necessity to deal with extreme degree of parallelism, heterogeneous architectures, multiple levels of memory hierarchy, power constraints, etc., advocates operating systems that can rapidly adapt to new hardware requirements, and that can support novel programming paradigms and runtime systems. On the other hand, a new class of more dynamic and complex applications are also on the horizon, with an increasing demand for application constructs such as in-situ analysis, workflows, elaborate monitoring and performance tools. This complexity relies not only on the rich features of POSIX, but also on the Linux APIs (such as the */proc*, */sys* filesystems, etc.) in particular.
##### Two Traditional HPC OS Approaches
Traditionally, light-weight operating systems specialized for HPC followed two approaches to tackle scalable execution of large-scale applications. In the full weight kernel (FWK) approach, a full Linux environment is taken as the basis, and features that inhibit attaining HPC scalability are removed, i.e., making it light-weight. The pure light-weight kernel (LWK) approach, on the other hand, starts from scratch and effort is undertaken to add sufficient functionality so that it provides a familiar API, typically something close to that of a general purpose OS, while at the same time it retains the desired scalability and reliability attributes. Neither of these approaches yields a fully Linux compatible environment.
##### The Multi-kernel Approach
A hybrid approach recognized recently by the system software community is to run Linux simultaneously with a lightweight kernel on compute nodes and multiple research projects are now pursuing this direction. The basic idea is that simulations run on an HPC tailored lightweight kernel, ensuring the necessary isolation for noiseless execution of parallel applications, but Linux is leveraged so that the full POSIX API is supported. Additionally, the small code base of the LWK can also facilitate rapid prototyping for new, exotic hardware features. Nevertheless, the questions of how to share node resources between the two types of kernels, where do device drivers execute, how exactly do the two kernels interact with each other and to what extent are they integrated, remain subjects of ongoing debate.
## Architectural Overview
At the heart of the stack is a low-level software infrastructure called Interface for Heterogeneous Kernels (IHK). IHK is a general framework that provides capabilities for partitioning resources in a many-core environment (e.g.,CPU cores and physical memory) and it enables management of lightweight kernels. IHK can allocate and release host resources dynamically and no reboot of the host machine is required when altering configuration. IHK also provides a low-level inter-kernel messaging infrastructure, called the Inter-Kernel Communication (IKC) layer. An architectural overview of the main system components is shown below.
![arch](https://www.sys.r-ccs.riken.jp/members_files/bgerofi/mckernel.png)
McKernel is a lightweight kernel written from scratch. It is designed for HPC and is booted from IHK. McKernel retains a binary compatible ABI with Linux, however, it implements only a small set of performance sensitive system calls and the rest are offloaded to Linux. Specifically, McKernel has its own memory management, it supports processes and multi-threading with a simple round-robin cooperative (tick-less) scheduler, and it implements signaling. It also allows inter-process memory mappings and it provides interfaces to hardware performance counters.
### Functionality
An overview of some of the principal functionalities of the IHK/McKernel stack is provided below.
#### System Call Offloading
System call forwarding in McKernel is implemented as follows. When an offloaded system call occurs, McKernel marshals the system call number along with its arguments and sends a message to Linux via a dedicated IKC channel. The corresponding proxy process running on Linux is by default waiting for system call requests through an ioctl() call into IHKs system call delegator kernel module. The delegator kernel modules IKC interrupt handler wakes up the proxy process, which returns to userspace and simply invokes the requested system call. Once it obtains the return value, it instructs the delegator module to send the result back to McKernel, which subsequently passes the value to user-space.
#### Unified Address Space
The unified address space model in IHK/McKernel ensures that offloaded system calls can seamlessly resolve arguments even in case of pointers. This mechanism is depicted below and is implemented as follows.
![unified_ap](https://www.sys.r-ccs.riken.jp/members_files/bgerofi/img/unified_address_space_en.png)
First, the proxy process is compiled as a position independent binary, which enables us to map the code and data segments specific to the proxy process to an address range which is explicitly excluded from McKernels user space. The grey box on the right side of the figure demonstrates the excluded region. Second, the entire valid virtual address range of McKernels application user-space is covered by a special mapping in the proxy process for which we use a pseudo file mapping in Linux. This mapping is indicated by the blue box on the left side of the figure.
## Installation
For a smooth experience, we recommend the following combination of OS distributions and platforms:
- CentOS 7.3+ running on Intel Xeon, Xeon Phi, Fujitsu A64FX
##### 1. Change SELinux settings
Log in as the root and disable SELinux:
~~~~
vim /etc/selinux/config
~~~~
Change the file to SELINUX=disabled
##### 2. Reboot the host machine
~~~~
sudo reboot
~~~~
##### 3. Prepare packages, kernel symbol table file
You will need the following packages installed:
~~~~
sudo yum install cmake kernel-devel binutils-devel systemd-devel numactl-devel gcc make nasm git libdwarf-devel
~~~~
Note that to install libdwarf-devel to RHEL-8.2, you need to enable the CodeReady Linux Builder (CLB) repository and the EPEL repository with the following commands:
~~~~
sudo subscription-manager repos --enable codeready-builder-for-rhel-8-$(/bin/arch)-rpms
~~~~
Grant read permission to the System.map file of your kernel version:
~~~~
sudo chmod a+r /boot/System.map-`uname -r`
~~~~
##### 4. Obtain sources and compile the kernel
Clone the source code:
~~~~
mkdir -p ~/src/ihk+mckernel/
cd ~/src/ihk+mckernel/
git clone --recursive -b development https://github.com/RIKEN-SysSoft/mckernel.git
~~~~
(Optional) Checkout to the specific branch or version:
~~~~
cd mckernel
git checkout <pathspec>
git submodule update
~~~~
Foe example, if you want to try the development branch, use "development" as the pathspec. If you want to try the prerelease version 1.7.0-0.2, use "1.7.0-0.2".
###### 4.1 Install with cmake
Configure and compile:
~~~~
mkdir -p build && cd build
cmake -DCMAKE_INSTALL_PREFIX=${HOME}/ihk+mckernel $HOME/src/ihk+mckernel/mckernel
make -j install
~~~~
The IHK kernel modules and McKernel kernel image should be installed under the **ihk+mckernel** folder in your home directory.
###### 4.2 Install with rpm
Build rpm:
~~~~
mkdir -p build && cd build
cmake $HOME/src/ihk+mckernel/mckernel
make dist
cp mckernel-<version>.tar.gz <rpmbuild>/SOURCES
rpm -ba scripts/mckernel.spec
sudo rpm -ivh <rpmbuild>/RPMS/<arch>/mckernel-<version>-<release>_<linux_kernel_ver>_<dist>.<arch>.rpm
~~~~
The IHK kernel modules and McKernel kernel image are installed under the system directory.
##### 5. Boot McKernel
A boot script called mcreboot.sh is provided under sbin in the install folder. To boot on logical CPU 1 with 512MB of memory, use the following invocation:
~~~~
export TOP=${HOME}/ihk+mckernel/
cd ${TOP}
sudo ./sbin/mcreboot.sh -c 1 -m 512m
~~~~
You should see something similar like this if you display the McKernel's kernel message log:
~~~~
./sbin/ihkosctl 0 kmsg
IHK/McKernel started.
[ -1]: no_execute_available: 1
[ -1]: map_fixed: phys: 0xfee00000 => 0xffff860000009000 (1 pages)
[ -1]: setup_x86 done.
[ -1]: ns_per_tsc: 385
[ -1]: KCommand Line: hidos dump_level=24
[ -1]: Physical memory: 0x1ad3000 - 0x21000000, 525520896 bytes, 128301 pages available @ NUMA: 0
[ -1]: NUMA: 0, Linux NUMA: 0, type: 1, available bytes: 525520896, pages: 128301
[ -1]: NUMA 0 distances: 0 (10),
[ -1]: map_fixed: phys: 0x28000 => 0xffff86000000a000 (2 pages)
[ -1]: Trampoline area: 0x28000
[ -1]: map_fixed: phys: 0x0 => 0xffff86000000c000 (1 pages)
[ -1]: # of cpus : 1
[ -1]: locals = ffff880001af6000
[ 0]: BSP: 0 (HW ID: 1 @ NUMA 0)
[ 0]: BSP: booted 0 AP CPUs
[ 0]: Master channel init acked.
[ 0]: vdso is enabled
IHK/McKernel booted.
~~~~
##### 6. Run a simple program on McKernel
The mcexec command line tool (which is also the Linux proxy process) can be used for executing applications on McKernel:
~~~~
./bin/mcexec hostname
centos-vm
~~~~
##### 7. Shutdown McKernel
Finally, to shutdown McKernel and release CPU/memory resources back to Linux use the following command:
~~~~
sudo ./sbin/mcstop+release.sh
~~~~
##### 8. Advanced: Enable Utility Thread offloading Interface (UTI)
UTI enables a runtime such as MPI runtime to spawn utility threads such as MPI asynchronous progress threads to Linux cores.
###### 8.1 Install capstone
Install EPEL capstone-devel:
~~~~
sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
sudo yum install capstone-devel
~~~~
###### 8.2 Install syscall_intercept
~~~~
git clone https://github.com/RIKEN-SysSoft/syscall_intercept.git
cmake ../arch/aarch64 -DCMAKE_INSTALL_PREFIX=<syscall-intercept-install> -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=gcc -DTREAT_WARNINGS_AS_ERRORS=OFF
~~~~
###### 8.3 Install UTI for McKernel
Install:
~~~~
git clone https://github.com/RIKEN-SysSoft/uti.git
mkdir build && cd build
../uti/configure --prefix=<mckernel-install> --with-rm=mckernel
make && make install
~~~~
###### 8.4 Install McKernel
~~~~
CMAKE_PREFIX_PATH=<syscall-intercept-install> cmake -DCMAKE_INSTALL_PREFIX=${HOME}/ihk+mckernel -DENABLE_UTI=ON $HOME/src/ihk+mckernel/mckernel
~~~~
###### 8.5 Run executable
~~~~
mcexec --enable-uti <command>
~~~~
###### 8.6 Install UTI for Linux for performance comparison
Install by make:
~~~~
git clone https://github.com/RIKEN-SysSoft/uti.git
mkdir build && cd build
../uti/configure --prefix=<uti-install> --with-rm=linux
make && make install
~~~~
Install by rpm:
~~~~
git clone https://github.com/RIKEN-SysSoft/uti.git
mkdir build && cd build
../uti/configure --prefix=<uti-install> --with-rm=linux
rm -f ~/rpmbuild/SOURCES/<version>.tar.gz
rpmbuild -ba ./scripts/uti.spec
rpm -Uvh uti-<version>-<release>-<arch>.rpm
~~~~
## The Team
The McKernel project was started at The University of Tokyo and currently it is mainly developed at RIKEN.
Some of our collaborators include:
- Hitachi
- Fujitsu
- CEA (France)
- NEC
## License
McKernel is GPL licensed, as found in the LICENSE file.
## Contact
Please give your feedback to us via one of the following mailing lists. Subscription via [www.pccluster.org](http://www.pccluster.org/mailman/listinfo/mckernel-users) is needed.
* English: mckernel-users@pccluster.org
* Japanese: mckernel-users-jp@pccluster.org

23
README.rst Normal file
View File

@ -0,0 +1,23 @@
.. figure:: docs/mckernel-logo.png
IHK/McKernel is a light-weight multi-kernel operating system designed
for high-end supercomputing. It runs Linux and McKernel, a light-weight
kernel (LWK), side-by-side inside compute nodes and aims at the
following:
- Provide scalable and consistent execution of large-scale parallel
scientific applications, but at the same time maintain the ability to
rapidly adapt to new hardware features and emerging programming
models
- Provide efficient memory and device management so that resource
contention and data movement are minimized at the system level
- Eliminate OS noise by isolating OS services in Linux and provide
jitter free execution on the LWK
- Support the full POSIX/Linux APIs by selectively offloading
(slow-path) system calls to Linux
Documentation
=============
Documentation is available
`here <https://ihkmckernel.readthedocs.io>`__.

View File

@ -30,6 +30,9 @@ endif ()
if (NOT "${LINUX_ARCH}" STREQUAL "${CMAKE_HOST_SYSTEM_PROCESSOR}")
string(REGEX REPLACE "ld$" "" CROSS_COMPILE "${CMAKE_LINKER}")
if (CMAKE_CROSSCOMPILING)
list(APPEND KBUILD_MAKE_FLAGS "QEMU_LD_PREFIX=${CMAKE_FIND_ROOT_PATH}")
endif()
list(APPEND KBUILD_MAKE_FLAGS "ARCH=${ARCH}")
list(APPEND KBUILD_MAKE_FLAGS "CROSS_COMPILE=${CROSS_COMPILE}")
endif()

29
docs/Makefile Normal file
View File

@ -0,0 +1,29 @@
# Minimal makefile for Sphinx documentation
#
# You can set these variables from the command line.
SPHINXOPTS =
SPHINXBUILD = sphinx-build
SOURCEDIR = .
BUILDDIR = _build
# Put it first so that "make" without argument is like "make help".
help:
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
.PHONY: help Makefile
po:
sphinx-build -b gettext . _build/gettext
/opt/local/Library/Frameworks/Python.framework/Versions/3.8/bin/sphinx-intl update -p _build/gettext -l ja
ja:
sphinx-build -b html -D language=ja . _build/html/ja
# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile
echo ".. figure:: docs/mckernel-logo.png" > ../README.rst; echo >> ../README.rst
cat summary.rst >> ../README.rst; echo >> ../README.rst
cat doc.rst >> ../README.rst
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)

446
docs/NEWS.rst Normal file
View File

@ -0,0 +1,446 @@
=============================================
Version 1.7.0 (Nov 25, 2020)
=============================================
----------------------
IHK major updates
----------------------
#. ihklib: add ihk_create_os_str
#. ihklib: ihk_reserve_mem: add capped best effort to balanced
------------------------
IHK major bug fixes
------------------------
#. make /dev/mcdN sharable
#. acpi: compat: RHEL-8.2
#. gic_chip_data: compat: RHEL-8.3
----------------------
McKernel major updates
----------------------
#. arm64: Contiguous PTE support
#. arm64: Scalable Vector Extension (SVE) support
#. arm64: PMU overflow interrupt support
#. arm64 port: Direct access to Mckernel memory from Linux
#. arm64 port: utility thread offloading, which spawns thread onto Linux CPU
#. eclair: support for live debug
#. Crash utility extension
#. Replace mcoverlayfs with a soft userspace overlay
#. Build system is switched to cmake
#. Core dump includes thread information
#. mcinspect and mcps: DWARF based LWK inspection
------------------------
McKernel major bug fixes
------------------------
#. shmobj: Fix rusage counting for large page
#. mcctrl control: task start_time changed to u64 nsec
#. mcctrl: add handling for one more level of page tables
#. Add kernel argument to turn on/off time sharing
#. flatten_string / process env: realign env and clear trailing bits
#. madvise: Add MADV_HUGEPAGE support
#. mcctrl: remove in-kernel calls to syscalls
#. arch_cpu_read_write_register: error return fix.
#. set_cputime(): interrupt enable/disable fix.
#. set_mempolicy(): Add mode check.
#. mbind(): Fix memory_range_lock deadlock.
#. ihk_ikc_recv: Record channel to packet for release
#. Add set_cputime() kernel to kernel case and mode enum.
#. execve: Call preempt_enable() before error-exit
#. memory/x86_64: fix linux safe_kernel_map
#. do_kill(): fix pids table when nr of threads is larger than num_processors
#. shmget: Use transparent huge pages when page size isn't specified
#. prctl: Add support for PR_SET_THP_DISABLE and PR_GET_THP_DISABLE
#. monitor_init: fix undetected hang on highest numbered core
#. init_process_stack: change premapped stack size based on arch
#. x86 syscalls: add a bunch of XXat() delegated syscalls
#. do_pageout: fix direct kernel-user access
#. stack: add hwcap auxval
#. perf counters: add arch-specific perf counters
#. Added check of nohost to terminate_host().
#. kmalloc: Fix address order in free list
#. sysfs: use nr_cpu_ids for cpumasks (fixes libnuma parsing error on ARM)
#. monitor_init: Use ihk_mc_cpu_info()
#. Fix ThunderX2 write-combined PTE flag insanity
#. ARM: eliminate zero page mapping (i.e, init_low_area())
#. eliminate futex_cmpxchg_enabled check (not used and dereffed a NULL pointer)
#. page_table: Fix return value of lookup_pte when ptl4 is blank
#. sysfs: add missing symlinks for cpu/node
#. Make Linux handler run when mmap to procfs.
#. Separate mmap area from program loading (relocation) area
#. move rusage into kernel ELF image (avoid dynamic alloc before NUMA init)
#. arm: turn off cpu on panic
#. page fault handler: protect thread accesses
#. Register PPD and release_handler at the same time.
#. fix to missing exclusive processing between terminate() and finalize_process().
#. perfctr_stop: add flags to no 'disable_intens'
#. fileobj, shmobj: free pages in object destructor (as opposed to page_unmap())
#. clear_range_l1, clear_range_middle: Fix handling contiguous PTE
#. do_mmap: don't pre-populate the whole file when asked for smaller segment
#. invalidate_one_page: Support shmobj and contiguous PTE
#. ubsan: fix undefined shifts
#. x86: disable zero mapping and add a boot pt for ap trampoline
#. rusage: Don't count PF_PATCH change
#. Fixed time processing.
#. copy_user_pte: vmap area not owned by McKernel
#. gencore: Zero-clear ELF header and memory range table
#. rpm: ignore CMakeCache.txt in dist and relax BuildRequires on cross build
#. gencore: Allocate ELF header to heap instead of stack
#. nanosleep: add cpu_pause() in spinwait loop
#. init_process: add missing initializations to proc struct
#. rus_vm_fault: always use a packet on the stack
#. process stack: use PAGE_SIZE in aux vector
#. copy_user_pte: base memobj copy on range & VR_PRIVATE
#. arm64: ptrace: Fix overwriting 1st argument with return value
#. page fault: use cow for private device mappings
#. reproductible builds: remove most install paths in c code
#. page fault: clear writable bit for non-dirtying access to shared ranges
#. mcreboot/mcstop+release: support for regular user execution
#. irqbalance_mck: replace extra service with service drop-in
#. do_mmap: give addr argument a chance even if not MAP_FIXED
#. x86: fix xchg() and cmpxchg() macros
#. IHK: support for using Linux work IRQ as IKC interrupt (optional)
#. MCS: fix ARM64 issue by using smp_XXX() functions (i.e., barrier()s)
#. procfs: add number of threads to stat and status
#. memory_range_lock: Fix deadlock in procfs/sysfs handler
#. flush instruction cache at context switch time if necessary
#. arm64: Fix PMU related functions
#. page_fault_process_memory_range: Disable COW for VM region with zeroobj
#. extend_process_region: Fall back to demand paging when not contiguous
#. munmap: fix deadlock with remote pagefault on vm range lock
#. procfs: if memory_range_lock fails, process later
#. migrate-cpu: Prevent migration target from calling schedule() twice
#. sched_request_migrate(): fix race condition between migration req and IRQs
#. get_one_cpu_topology: Renumber core_id (physical core id)
#. bb7e140 procfs cpuinfo: use sequence number as processor
#. set_host_vma(): do NOT read protect Linux VMA
#. hugefileobj: rewrite page allocation/handling
#. VM: use RW spinlock for vm_range_lock
#. /dev/shm: use Linux PFNs and populate mappings
#. Make struct ihk_os_rusage compatible with mckernel_rusage (workaround for Fugaku)
#. Record pthread routine address in clone(), keep helper threads on caller CPU core (workaround for Fugaku)
#. struct process: fix type of group_exit_status
#. tgkill: Fix argument validatation
#. set_robust_list: Add error check
#. mcexec: Don't forward SIGTSTP SIGTTIN SIGTTOUT to mckernel
#. syscall: add prlimit64
#. stack: grow on page fault
#. mcexec: use FLIB_NUM_PROCESS_ON_NODE when -n not specified (Fugaku specific)
===========================================
Version 1.6.0 (Nov 11, 2018)
===========================================
-----------------------------------------------
McKernel major updates
-----------------------------------------------
#. McKernel and Linux share one unified kernel virtual address space.
That is, McKernel sections resides in Linux sections spared for
modules. In this way, Linux can access the McKernel kernel memory area.
#. hugetlbfs support
#. IHK is now included as a git submodule
#. Debug messages are turned on/off in per souce file basis at run-time.
#. It's prohibited for McKernel to access physical memory ranges which Linux didn't give to McKernel.
#. UTI (capability to spawn a thread on Linux CPU) improvement:
* System calls issued from the thread are hooked by modifying binary in memory.
---------------------------
McKernel major bug fixes
---------------------------
#<digits> below denotes the redmine issue number (https://postpeta.pccluster.org/redmine/).
1. #926: shmget: Hide object with IPC_RMID from shmget
2. #1028: init_process: Inherit parent cpu_set
3. #995: Fix shebang recorded in argv[0]
4. #1024: Fix VMAP virtual address leak
5. #1109: init_process_stack: Support "ulimit -s unlimited"
6. x86 mem init: do not map identity mapping
7. mcexec_wait_syscall: requeue potential request on interrupted wait
8. mcctrl_ikc_send_wait: fix interrupt with do_frees == NULL
9. pager_req_read: handle short read
10. kprintf: only call eventfd() if it is safe to interrupt
11. process_procfs_request: Add Pid to /proc/<PID>/status
12. terminate: fix oversubscribe hang when waiting for other threads on same CPU to die
13. mcexec: Do not close fd returned to mckernel side
14. #976: execve: Clear sigaltstack and fp_regs
15. #1002: perf_event: Specify counter by bit_mask on start/stop
16. #1027: schedule: Don't reschedule immediately when wake up on migrate
17. #mcctrl: lookup unexported symbols at runtime
18. __sched_wakeup_thread: Notify interrupt_exit() of re-schedule
19. futex_wait_queue_me: Spin-sleep when timeout and idle_halt is specified
20. #1167: ihk_os_getperfevent,setperfevent: Timeout IKC sent by mcctrl
21. devobj: fix object size (POSTK_DEBUG_TEMP_FIX_36)
22. mcctrl: remove rus page cache
23. #1021: procfs: Support multiple reads of e.g. ``/proc/*/maps``
24. #1006: wait: Delay wake-up parent within switch context
25. #1164: mem: Check if phys-mem is within the range of McKernel memory
26. #1039: page_fault_process_memory_range: Remove ihk_mc_map_virtual for CoW of device map
27. partitioned execution: pass process rank to LWK
28. process/vm: implement access_ok()
29. spinlock: rewrite spinlock to use Linux ticket head/tail format
30. #986: Fix deadlock involving mmap_sem and memory_range_lock
31. Prevent one CPU from getting chosen by concurrent forks
32. #1009: check_signal: system call restart is done only once
33. #1176: syscall: the signal received during system call processing is not processed.
34. #1036 syscall_time: Handle by McKernel
35. #1165 do_syscall: Delegate system calls to the mcexec with the same pid
36. #1194 execve: Fix calling ptrace_report_signal after preemption is disabled
37. #1005 coredump: Exclude special areas
38. #1018 procfs: Fix pread/pwrite to procfs fail when specified size is bigger than 4MB
39. #1180 sched_setaffinity: Check migration after decrementing in_interrupt
40. #771, #1179, #1143 ptrace supports threads
41. #1189 procfs/do_fork: wait until procfs entries are registered
42. #1114 procfs: add '/proc/pid/stat' to mckernel side and fix its comm
43. #1116 mcctrl procfs: check entry was returned before using it
44. #1167 ihk_os_getperfevent,setperfevent: Return -ETIME when IKC timeouts
45. mcexec/execve: fix shebangs handling
46. procfs: handle 'comm' on mckernel side
47. ihk_os_setperfevent: Return number of registered events
48. mcexec: fix terminating zero after readlink()
===========================================
Version 1.5.1 (July 9, 2018)
===========================================
-----------------------------------------------
McKernel major updates
-----------------------------------------------
Watchdog timer to detect hang of McKernel
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mcexec prints out the following line to its stderr when a hang of McKernel is detected.
::
mcexec detected hang of McKernel
The watchdog timer is enabled by passing -i <timeout_in_sec> option to mcreboot.sh. <timeout_in_sec> specifies the interval of checking if McKernel is alive.
For example, specify ``-i 600`` to detect the hang with 10 minutes interval:
::
mcreboot.sh -i 600
The detailed step of the hang detection is as follows.
#. mcexec acquires eventfd for notification from IHK and perform epoll() on it.
#. A daemon called ihkmond monitors the state of McKernel periodically with the interval specified by the -i option. It judges that McKernel is hanging and notifies mcexec by the eventfd if its state hasn't changed since the last check.
---------------------------
McKernel major bug fixes
---------------------------
1. #1146: pager_req_map(): do not take mmap_sem if not needed
2. #1135: prepare_process_ranges_args_envs(): fix saving cmdline
3. #1144: fileobj/devobj: record path name
4. #1145: fileobj: use MCS locks for per-file page hash
5. #1076: mcctrl: refactor prepare_image into new generic ikc send&wait
6. #1072: execve: fix execve with oversubscribing
7. #1132: execve: use thread variable instead of cpu_local_var(current)
8. #1117: mprotect: do not set page table writable for cow pages
9. #1143: syscall wait4: add _WALL (POSTK_DEBUG_ARCH_DEP_44)
10. #1064: rusage: Fix initialization of rusage->num_processors
11. #1133: pager_req_unmap: Put per-process data at exit
12. #731: do_fork: Propagate error code returned by mcexec
13. #1149: execve: Reinitialize vm_regions's map area on execve
14. #1065: procfs: Show file names in /proc/<PID>/maps
15. #1112: mremap: Fix type of size arguments (from ssize_t to size_t)
16. #1121: sched_getaffinity: Check arguments in the same order as in Linux
17. #1137: mmap, mremap: Check arguments in the same order as in Linux
18. #1122: fix return value of sched_getaffinity
19. #732: fix: /proc/<PID>/maps outputs a unnecessary NULL character
===================================
Version 1.5.0 (Apr 5, 2018)
===================================
--------------------------------------
McKernel major updates
--------------------------------------
1. Aid for Linux version migration: Detect /proc, /sys format change
between two kernel verions
2. Swap out
* Only swap-out anonymous pages for now
3. Improve support of /proc/maps
4. mcstat: Linux tool to show resource usage
---------------------------
McKernel major bug fixes
---------------------------
#. #727: execve: Fix memory leak when receiving SIGKILL
#. #829: perf_event_open: Support PERF_TYPE_HARDWARE and PERF_TYPE_HW_CACHE
#. #906: mcexec: Check return code of fork()
#. #1038: mcexec: Timeout when incorrect value is given to -n option
#. #943 #945 #946 #960 #961: mcexec: Support strace
#. #1029: struct thread is not released with stress-test involving signal and futex
#. #863 #870 : Respond immediately to terminating signal when offloading system call
#. #1119: translate_rva_to_rpa(): use 2MB blocks in 1GB pages on x86
#. #898: Shutdown OS only after no in-flight IKC exist
#. #882: release_handler: Destroy objects as the process which opened it
#. #882: mcexec: Make child process exit if the parent is killed during fork()
#. #925: XPMEM: Don't destroy per-process object of the parent
#. #885: ptrace: Support the case where a process attaches its child
#. #1031: sigaction: Support SA_RESETHAND
#. #923: rus_vm_fault: Return error when a thread not performing system call offloading causes remote page fault
#. #1032 #1033 #1034: getrusage: Fix ru_maxrss, RUSAGE_CHILDREN, ru_stime related bugs
#. #1120: getrusage: Fix deadlock on thread->times_update
#. #1123: Fix deadlock related to wait_queue_head_list_node
#. #1124: Fix deadlock of calling terminate() from terminate()
#. #1125: Fix deadlock related to thread status
* Related functions are: hold_thread(), do_kill() and terminate()
#. #1126: uti: Fix uti thread on the McKernel side blocks others in do_syscall()
#. #1066: procfs: Show Linux /proc/self/cgroup
#. #1127: prepare_process_ranges_args_envs(): fix generating saved_cmdline to avoid PF in strlen()
#. #1128: ihk_mc_map/unmap_virtual(): do proper TLB invalidation
#. #1043: terminate(): fix update_lock and threads_lock order to avoid deadlock
#. #1129: mcreboot.sh: Save ``/proc/irq/*/smp_affinity`` to ``/tmp/mcreboot``
#. #1130: mcexec: drop READ_IMPLIES_EXEC from personality
--------------------
McKernel workarounds
--------------------
#. Forbid CPU oversubscription
* It can be turned on by mcreboot.sh -O option
===================================
Version 1.4.0 (Oct 30, 2017)
===================================
-----------------------------------------------------------
Abstracted event type support in perf_event_open()
-----------------------------------------------------------
PERF_TYPE_HARDWARE and PERF_TYPE_CACHE types are supported.
----------------------------------
Direct user-space access
----------------------------------
Code lines using direct user-space access (e.g. passing user-space
pointer to memcpy()) becomes more portable across processor
architectures. The modification follows the following rules.
1. Move the code section as it is to the architecture dependent
directory if it is a part of the critical-path.
2. Otherwise, rewrite the code section by using the portable methods.
The methods include copy_from_user(), copy_to_user(),
pte_get_phys() and phys_to_virt().
--------------------------------
MPI and OpenMP micro-bench tests
--------------------------------
The performance figures of MPI and OpenMP primitives are compared with
those of Linux by using Intel MPI Benchmarks and EPCC OpenMP Micro
Benchmark.
===================================
Version 1.3.0 (Sep 30, 2017)
===================================
--------------------
Kernel dump
--------------------
#. A dump level of "only kernel memory" is added.
The following two levels are available now:
+--+-----------------------+
| 0|Dump all |
+--+-----------------------+
|24|Dump only kernel memory|
+--+-----------------------+
The dump level can be set by -d option in ihkosctl or the argument
for ihk_os_makedumpfile(), as shown in the following examples:
::
Command: ihkosctl 0 dump -d 24
Function call: ihk_os_makedumpfile(0, NULL, 24, 0);
#. Dump file is created when Linux panics.
The dump level can be set by dump_level kernel argument, as shown in the
following example:
::
ihkosctl 0 kargs "hidos dump_level=24"
The IHK dump function is registered to panic_notifier_list when creating /dev/mcdX and called when Linux panics.
-----------------------------
Quick Process Launch
-----------------------------
MPI process launch time and some of the initialization time can be
reduced in application consisting of multiple MPI programs which are
launched in turn in the job script.
The following two steps should be performed to use this feature:
#. Replace mpiexec with ql_mpiexec_start and add some lines for ql_mpiexec_finalize in the job script
#. Modify the app so that it can repeat calculations and wait for the instructions from ql_mpiexec_{start,finalize} at the end of the loop
The first step is explained using an example. Assume the original job script looks like this:
.. code-block:: none
/* Execute ensamble simulation and then data assimilation, and repeat this ten times */
for i in {1..10}; do
/* Each ensamble simulation execution uses 100 nodes, launch ten of them in parallel */
for j in {1..10}; do
mpiexec -n 100 -machinefile ./list1_$j p1.out a1 & pids[$i]=$!;
done
/* Wait until the ten ensamble simulation programs finish */
for j in {1..10}; do wait ${pids[$j]}; done
/* Launch one data assimilation program using 1000 nodes */
mpiexec -n 1000 -machinefile ./list2 p2.out a2
done
The job script should be modified like this:
.. code-block:: none
for i in {1..10}; do
for j in {1..10}; do
/* Replace mpiexec with ql_mpiexec_start */
ql_mpiexec_start -n 100 -machinefile ./list1_$j p1.out a1 & pids[$j]=$!;
done
for j in {1..10}; do wait ${pids[$j]}; done
ql_mpiexec_start -n 1000 -machinefile ./list2 p2.out a2
done
/* p1.out and p2.out don't exit but are waiting for the next calculation. So tell them to exit */
for j in {1..10}; do
ql_mpiexec_finalize -machinefile ./list1_$i p1.out a1;
done
ql_mpiexec_finalize -machinefile ./list2 p2.out a2;
The second step is explained using a pseudo-code.
.. code-block:: none
MPI_Init();
Prepare data exchange with preceding / following MPI programs
loop:
foreach Fortran module
Initialize data using command-line argments, parameter files, environment variables
Input data from preceding MPI programs / Read snap-shot
Perform main calculation
Output data to following MPI programs / Write snap-shot
/* ql_client() waits for command of ql_mpiexec_{start,finish} */
if (ql_client() == QL_CONTINUE) { goto loop; }
MPI_Finalize();
qlmpilib.h should be included in the code and libql{mpi,fort}.so should be linked to the executable file.

65
docs/archtecture.rst Normal file
View File

@ -0,0 +1,65 @@
Architectural Overview
======================
At the heart of the stack is a low-level software infrastructure called
Interface for Heterogeneous Kernels (IHK). IHK is a general framework
that provides capabilities for partitioning resources in a many-core
environment (e.g.,CPU cores and physical memory) and it enables
management of lightweight kernels. IHK can allocate and release host
resources dynamically and no reboot of the host machine is required when
altering configuration. IHK also provides a low-level inter-kernel
messaging infrastructure, called the Inter-Kernel Communication (IKC)
layer. An architectural overview of the main system components is shown
below.
.. figure:: mckernel.png
:alt: arch
McKernel is a lightweight kernel written from scratch. It is designed
for HPC and is booted from IHK. McKernel retains a binary compatible ABI
with Linux, however, it implements only a small set of performance
sensitive system calls and the rest are offloaded to Linux.
Specifically, McKernel has its own memory management, it supports
processes and multi-threading with a simple round-robin cooperative
(tick-less) scheduler, and it implements signaling. It also allows
inter-process memory mappings and it provides interfaces to hardware
performance counters.
Functionality
-------------
An overview of some of the principal functionalities of the IHK/McKernel
stack is provided below.
System Call Offloading
~~~~~~~~~~~~~~~~~~~~~~
System call forwarding in McKernel is implemented as follows. When an
offloaded system call occurs, McKernel marshals the system call number
along with its arguments and sends a message to Linux via a dedicated
IKC channel. The corresponding proxy process running on Linux is by
default waiting for system call requests through an ioctl() call into
IHKs system call delegator kernel module. The delegator kernel modules
IKC interrupt handler wakes up the proxy process, which returns to
userspace and simply invokes the requested system call. Once it obtains
the return value, it instructs the delegator module to send the result
back to McKernel, which subsequently passes the value to user-space.
Unified Address Space
~~~~~~~~~~~~~~~~~~~~~
The unified address space model in IHK/McKernel ensures that offloaded
system calls can seamlessly resolve arguments even in case of pointers.
This mechanism is depicted below and is implemented as follows.
.. figure:: unified_address_space_en.png
:alt: unified_ap
First, the proxy process is compiled as a position independent binary,
which enables us to map the code and data segments specific to the proxy
process to an address range which is explicitly excluded from McKernels
user space. The grey box on the right side of the figure demonstrates
the excluded region. Second, the entire valid virtual address range of
McKernels application user-space is covered by a special mapping in the
proxy process for which we use a pseudo file mapping in Linux. This
mapping is indicated by the blue box on the left side of the figure.

47
docs/background.rst Normal file
View File

@ -0,0 +1,47 @@
Background and Motivation
=========================
With the growing complexity of high-end supercomputers, the current
system software stack faces significant challenges as we move forward to
exascale and beyond. The necessity to deal with extreme degree of
parallelism, heterogeneous architectures, multiple levels of memory
hierarchy, power constraints, etc., advocates operating systems that can
rapidly adapt to new hardware requirements, and that can support novel
programming paradigms and runtime systems. On the other hand, a new
class of more dynamic and complex applications are also on the horizon,
with an increasing demand for application constructs such as in-situ
analysis, workflows, elaborate monitoring and performance tools. This
complexity relies not only on the rich features of POSIX, but also on
the Linux APIs (such as the */proc*, */sys* filesystems, etc.) in
particular.
Two Traditional HPC OS Approaches
---------------------------------
Traditionally, light-weight operating systems specialized for HPC
followed two approaches to tackle scalable execution of large-scale
applications. In the full weight kernel (FWK) approach, a full Linux
environment is taken as the basis, and features that inhibit attaining
HPC scalability are removed, i.e., making it light-weight. The pure
light-weight kernel (LWK) approach, on the other hand, starts from
scratch and effort is undertaken to add sufficient functionality so that
it provides a familiar API, typically something close to that of a
general purpose OS, while at the same time it retains the desired
scalability and reliability attributes. Neither of these approaches
yields a fully Linux compatible environment.
The Multi-kernel Approach
-------------------------
A hybrid approach recognized recently by the system software community
is to run Linux simultaneously with a lightweight kernel on compute
nodes and multiple research projects are now pursuing this direction.
The basic idea is that simulations run on an HPC tailored lightweight
kernel, ensuring the necessary isolation for noiseless execution of
parallel applications, but Linux is leveraged so that the full POSIX API
is supported. Additionally, the small code base of the LWK can also
facilitate rapid prototyping for new, exotic hardware features.
Nevertheless, the questions of how to share node resources between the
two types of kernels, where do device drivers execute, how exactly do
the two kernels interact with each other and to what extent are they
integrated, remain subjects of ongoing debate.

View File

@ -0,0 +1,60 @@
Boot McKernel
----------------
A boot script called ``mcreboot.sh`` is provided under ``sbin`` in the install
folder. To boot on logical CPU 1 with 512MB of memory, use the following
invocation:
::
export TOP=${HOME}/ihk+mckernel/
cd ${TOP}
sudo ./sbin/mcreboot.sh -c 1 -m 512m
You should see something similar like this if you display the McKernels
kernel message log:
.. code-block:: none
./sbin/ihkosctl 0 kmsg
IHK/McKernel started.
[ -1]: no_execute_available: 1
[ -1]: map_fixed: phys: 0xfee00000 => 0xffff860000009000 (1 pages)
[ -1]: setup_x86 done.
[ -1]: ns_per_tsc: 385
[ -1]: KCommand Line: hidos dump_level=24
[ -1]: Physical memory: 0x1ad3000 - 0x21000000, 525520896 bytes, 128301 pages available @ NUMA: 0
[ -1]: NUMA: 0, Linux NUMA: 0, type: 1, available bytes: 525520896, pages: 128301
[ -1]: NUMA 0 distances: 0 (10),
[ -1]: map_fixed: phys: 0x28000 => 0xffff86000000a000 (2 pages)
[ -1]: Trampoline area: 0x28000
[ -1]: map_fixed: phys: 0x0 => 0xffff86000000c000 (1 pages)
[ -1]: # of cpus : 1
[ -1]: locals = ffff880001af6000
[ 0]: BSP: 0 (HW ID: 1 @ NUMA 0)
[ 0]: BSP: booted 0 AP CPUs
[ 0]: Master channel init acked.
[ 0]: vdso is enabled
IHK/McKernel booted.
Run a simple program on McKernel
-----------------------------------
The mcexec command line tool (which is also the Linux proxy process) can
be used for executing applications on McKernel:
::
./bin/mcexec hostname
centos-vm
Shutdown McKernel
--------------------
Finally, to shutdown McKernel and release CPU/memory resources back to
Linux use the following command:
::
sudo ./sbin/mcstop+release.sh

173
docs/conf.py Normal file
View File

@ -0,0 +1,173 @@
# -*- coding: utf-8 -*-
#
# Configuration file for the Sphinx documentation builder.
#
# This file does only contain a selection of the most common options. For a
# full list see the documentation:
# http://www.sphinx-doc.org/en/master/config
# -- Path setup --------------------------------------------------------------
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#
# import os
# import sys
# sys.path.insert(0, os.path.abspath('.'))
# -- Project information -----------------------------------------------------
project = u'IHK/McKernel'
copyright = u'2020, Masamichi Takagi, Balazs Gerofi, Yutaka Ishikawa'
author = u'Masamichi Takagi, Balazs Gerofi, Yutaka Ishikawa'
# The short X.Y version
version = u''
# The full version, including alpha/beta/rc tags
release = u''
# -- General configuration ---------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
#
# needs_sphinx = '1.0'
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = [
'recommonmark',
]
numfig = True
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
# The suffix(es) of source filenames.
# You can specify multiple suffix as a list of string:
source_suffix = ['.rst', '.md']
# The master toctree document.
master_doc = 'index'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#
# This is also used if you do content translation via gettext catalogs.
# Usually you set "language" from the command line for these cases.
language = None
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
# This pattern also affects html_static_path and html_extra_path.
exclude_patterns = [u'_build', 'Thumbs.db', '.DS_Store']
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = None
# -- Options for HTML output -------------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
#
html_theme = 'sphinx_rtd_theme'
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
#
# html_theme_options = {}
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['_static']
# Custom sidebar templates, must be a dictionary that maps document names
# to template names.
#
# The default sidebars (for documents that don't match any pattern) are
# defined by theme itself. Builtin themes are using these templates by
# default: ``['localtoc.html', 'relations.html', 'sourcelink.html',
# 'searchbox.html']``.
#
# html_sidebars = {}
# -- Options for HTMLHelp output ---------------------------------------------
# Output file base name for HTML help builder.
htmlhelp_basename = 'IHKMcKerneldoc'
# -- Options for LaTeX output ------------------------------------------------
latex_elements = {
# The paper size ('letterpaper' or 'a4paper').
#
# 'papersize': 'letterpaper',
# The font size ('10pt', '11pt' or '12pt').
#
# 'pointsize': '10pt',
# Additional stuff for the LaTeX preamble.
#
# 'preamble': '',
# Latex figure (float) alignment
#
# 'figure_align': 'htbp',
}
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title,
# author, documentclass [howto, manual, or own class]).
latex_documents = [
(master_doc, 'IHKMcKernel.tex', u'IHK/McKernel Documentation',
u'Masamichi Takagi, Balazs Gerofi, Yutaka Ishikawa', 'manual'),
]
# -- Options for manual page output ------------------------------------------
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
(master_doc, 'ihkmckernel', u'IHK/McKernel Documentation',
[author], 1)
]
# -- Options for Texinfo output ----------------------------------------------
# Grouping the document tree into Texinfo files. List of tuples
# (source start file, target name, title, author,
# dir menu entry, description, category)
texinfo_documents = [
(master_doc, 'IHKMcKernel', u'IHK/McKernel Documentation',
author, 'IHKMcKernel', 'One line description of project.',
'Miscellaneous'),
]
# -- Options for Epub output -------------------------------------------------
# Bibliographic Dublin Core info.
epub_title = project
# The unique identifier of the text. This can be a ISBN number
# or the project homepage.
#
# epub_identifier = ''
# A unique identification for the text.
#
# epub_uid = ''
# A list of files that should not be packed into the epub file.
epub_exclude_files = ['search.html']

11
docs/contact.rst Normal file
View File

@ -0,0 +1,11 @@
Contact
=======
Please give your feedback to us via one of the following mailing lists.
Subscription via
`www.pccluster.org <http://www.pccluster.org/mailman/listinfo/mckernel-users>`__
is needed.
- English: mckernel-users@pccluster.org
- Japanese: mckernel-users-jp@pccluster.org

5
docs/cover.rst Normal file
View File

@ -0,0 +1,5 @@
.. include:: logo.rst
.. include:: summary.rst
See `Quick Guide -- Installation <quick.html#installation>`__ for jump start.

5
docs/doc.rst Normal file
View File

@ -0,0 +1,5 @@
Documentation
=============
Documentation is available
`here <https://ihkmckernel.readthedocs.io>`__.

BIN
docs/ihk.pdf Normal file

Binary file not shown.

18
docs/ihk_developers.rst Normal file
View File

@ -0,0 +1,18 @@
.. sectnum::
:suffix: .
:depth: 3
External Specs
==============
Overview
--------
Function Specs
--------------
Command / Daemon Specs
----------------------
Booting LWK
===========

58
docs/index.rst Normal file
View File

@ -0,0 +1,58 @@
.. IHK/McKernel documentation master file, created by
sphinx-quickstart on Mon Jul 27 15:57:24 2020.
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
===================
IHK/McKernel
===================
.. include:: cover.rst
.. toctree::
:maxdepth: 2
:caption: Quick Guide
quick
.. toctree::
:maxdepth: 2
:caption: Users' Guide
users
.. toctree::
:maxdepth: 2
:caption: Operators' Guide
operators
.. toctree::
:maxdepth: 2
:caption: IHK Developers' Guide
ihk_developers
.. toctree::
:maxdepth: 2
:caption: McKernel Developers' Guide
mckernel_developers
.. toctree::
:maxdepth: 2
:caption: IHK Specifications
spec/ihk
.. toctree::
:maxdepth: 2
:caption: McKernel Specifications
spec/mckernel
.. toctree::
:maxdepth: 2
:caption: What's New
NEWS

202
docs/install.rst Normal file
View File

@ -0,0 +1,202 @@
.. highlight:: bash
Installation
============
The following OS distributions and platforms are recommended:
* OS distribution
* CentOS 7.3 or later
* RHEL 7.3 or later
* Platform
* Intel Xeon
* Intel Xeon Phi
* Fujitsu A64FX
Prepare files for building McKernel
-----------------------------------
Grant read permission to the System.map file of your kernel version on the build machine:
::
sudo chmod a+r /boot/System.map-`uname -r`
Install the following packages to the build machine:
::
cmake kernel-devel binutils-devel systemd-devel numactl-devel gcc make nasm git libdwarf-devel
When having access to repositories
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
On RHEL 8, enable the CodeReady Linux Builder (CLB) repository:
::
sudo subscription-manager repos --enable codeready-builder-for-rhel-8-$(/bin/arch)-rpms
On CentOS 8, enable the PowerTools repository:
::
sudo dnf config-manager --set-enabled PowerTools
Install with yum:
::
sudo yum install cmake kernel-devel binutils-devel systemd-devel numactl-devel gcc make nasm git libdwarf-devel
When not having access to repositories
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Ask the system administrator to install them. Note that ``libdwarf-devel`` is in the CodeReady Linux Builder repository on RHEL 8 or in the PowerTools repository on CentOS 8.
Clone, compile, install
--------------------------
Clone the source code:
::
mkdir -p ~/src/ihk+mckernel/
cd ~/src/ihk+mckernel/
git clone --recursive -b development https://github.com/RIKEN-SysSoft/mckernel.git
(Optional) Checkout to the specific branch or version:
::
cd mckernel
git checkout <pathspec>
git submodule update
Foe example, if you want to try the development branch, use
“development” as the pathspec. If you want to try the prerelease version
1.7.0-0.2, use “1.7.0-0.2”.
Move to build directory:
::
mkdir -p ~/src/ihk+mckernel/build && cd ~/src/ihk+mckernel/build
Run cmake:
When not cross-compiling:
~~~~~~~~~~~~~~~~~~~~~~~~~
::
cmake -DCMAKE_INSTALL_PREFIX=${HOME}/ihk+mckernel ../mckernel
When cross-compiling:
~~~~~~~~~~~~~~~~~~~~~
::
cmake -DCMAKE_INSTALL_PREFIX=${HOME}/ihk+mckernel \
-DUNAME_R=<target_uname_r> \
-DKERNEL_DIR=<kernnel_dir> \
-DBUILD_TARGET=smp-arm64 \
-DCMAKE_TOOLCHAIN_FILE=../mckernel/cmake/cross-aarch64.cmake \
../mckernel
Install with cmake
~~~~~~~~~~~~~~~~~~~~~~
Install with make:
::
make -j install
The kernel modules and McKernel kernel image should be installed
under the **ihk+mckernel** folder in your home directory.
Install with rpm
~~~~~~~~~~~~~~~~~~~~
Create the tarball and the spec file:
::
make dist
cp mckernel-<version>.tar.gz <rpmbuild>/SOURCES
Create the rpm package:
When not cross-compiling:
"""""""""""""""""""""""""
::
rpmbuild -ba scripts/mckernel.spec
When cross-compiling:
"""""""""""""""""""""
::
rpmbuild -ba scripts/mckernel.spec --target <target_uname_m> -D 'kernel_version <target_uname_r>' -D 'kernel_dir <kernel_source>'
Install the rpm package:
::
sudo rpm -ivh <rpmbuild>/RPMS/<arch>/mckernel-<version>-<release>_<linux_kernel_ver>_<dist>.<arch>.rpm
The kernel modules and McKernel kernel image are installed under the
standard system directories.
Prepare files and change settings for installing McKernel
---------------------------------------------------------
Disable SELinux of the compute nodes:
::
sudo vim /etc/selinux/config
Change the file to SELINUX=disabled. And then reboot the compute nodes:
::
sudo reboot
Install the following packages to the compute nodes:
::
systemd-libs numactl-libs libdwarf
When having access to repositories
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
On RHEL 8, enable the CodeReady Linux Builder (CLB) repository:
::
sudo subscription-manager repos --enable codeready-builder-for-rhel-8-$(/bin/arch)-rpms
On CentOS 8, enable the PowerTools repository:
::
sudo dnf config-manager --set-enabled PowerTools
Install with yum:
::
sudo yum install systemd-libs numactl-libs libdwarf
When not having access to repositories
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Ask the system administrator to install them. Note that ``libdwarf`` is in the CodeReady Linux Builder repository on RHEL 8 or in the PowerTools repository on CentOS 8.

5
docs/license.rst Normal file
View File

@ -0,0 +1,5 @@
License
=======
McKernel is GPL licensed, as found in the LICENSE file.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,469 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2020, Masamichi Takagi, Balazs Gerofi, Yutaka Ishikawa
# This file is distributed under the same license as the IHK/McKernel
# package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: IHK/McKernel \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-08-04 16:40+0900\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.7.0\n"
#: ../../README_.rst:2
msgid "|McKernel Logo|"
msgstr ""
#: ../../README_.rst:4
msgid ""
"IHK/McKernel is a light-weight multi-kernel operating system designed for"
" high-end supercomputing. It runs Linux and McKernel, a light-weight "
"kernel (LWK), side-by-side inside compute nodes and aims at the "
"following:"
msgstr ""
#: ../../README_.rst:9
msgid ""
"Provide scalable and consistent execution of large-scale parallel "
"scientific applications, but at the same time maintain the ability to "
"rapidly adapt to new hardware features and emerging programming models"
msgstr ""
#: ../../README_.rst:13
msgid ""
"Provide efficient memory and device management so that resource "
"contention and data movement are minimized at the system level"
msgstr ""
#: ../../README_.rst:15
msgid ""
"Eliminate OS noise by isolating OS services in Linux and provide jitter "
"free execution on the LWK"
msgstr ""
#: ../../README_.rst:17
msgid ""
"Support the full POSIX/Linux APIs by selectively offloading (slow-path) "
"system calls to Linux"
msgstr ""
#: ../../README_.rst:21
msgid "Documentation"
msgstr ""
#: ../../README_.rst:23
msgid "Documentation is available `here <https://ihkmckernel.readthedocs.io>`__."
msgstr ""
#: ../../README_.rst:27
msgid "Contents"
msgstr ""
#: ../../README_.rst:29
msgid "`Background <#background-and-motivation>`__"
msgstr ""
#: ../../README_.rst:30
msgid "`Architectural Overview <#architectural-overview>`__"
msgstr ""
#: ../../README_.rst:31
msgid "`Installation <#installation>`__"
msgstr ""
#: ../../README_.rst:32
msgid "`The Team <#the-team>`__"
msgstr ""
#: ../../README_.rst:35
msgid "Background and Motivation"
msgstr ""
#: ../../README_.rst:37
msgid ""
"With the growing complexity of high-end supercomputers, the current "
"system software stack faces significant challenges as we move forward to "
"exascale and beyond. The necessity to deal with extreme degree of "
"parallelism, heterogeneous architectures, multiple levels of memory "
"hierarchy, power constraints, etc., advocates operating systems that can "
"rapidly adapt to new hardware requirements, and that can support novel "
"programming paradigms and runtime systems. On the other hand, a new class"
" of more dynamic and complex applications are also on the horizon, with "
"an increasing demand for application constructs such as in-situ analysis,"
" workflows, elaborate monitoring and performance tools. This complexity "
"relies not only on the rich features of POSIX, but also on the Linux APIs"
" (such as the */proc*, */sys* filesystems, etc.) in particular."
msgstr ""
#: ../../README_.rst:52
msgid "Two Traditional HPC OS Approaches"
msgstr ""
#: ../../README_.rst:54
msgid ""
"Traditionally, light-weight operating systems specialized for HPC "
"followed two approaches to tackle scalable execution of large-scale "
"applications. In the full weight kernel (FWK) approach, a full Linux "
"environment is taken as the basis, and features that inhibit attaining "
"HPC scalability are removed, i.e., making it light-weight. The pure "
"light-weight kernel (LWK) approach, on the other hand, starts from "
"scratch and effort is undertaken to add sufficient functionality so that "
"it provides a familiar API, typically something close to that of a "
"general purpose OS, while at the same time it retains the desired "
"scalability and reliability attributes. Neither of these approaches "
"yields a fully Linux compatible environment."
msgstr ""
#: ../../README_.rst:67
msgid "The Multi-kernel Approach"
msgstr ""
#: ../../README_.rst:69
msgid ""
"A hybrid approach recognized recently by the system software community is"
" to run Linux simultaneously with a lightweight kernel on compute nodes "
"and multiple research projects are now pursuing this direction. The basic"
" idea is that simulations run on an HPC tailored lightweight kernel, "
"ensuring the necessary isolation for noiseless execution of parallel "
"applications, but Linux is leveraged so that the full POSIX API is "
"supported. Additionally, the small code base of the LWK can also "
"facilitate rapid prototyping for new, exotic hardware features. "
"Nevertheless, the questions of how to share node resources between the "
"two types of kernels, where do device drivers execute, how exactly do the"
" two kernels interact with each other and to what extent are they "
"integrated, remain subjects of ongoing debate."
msgstr ""
#: ../../README_.rst:83
msgid "Architectural Overview"
msgstr ""
#: ../../README_.rst:85
msgid ""
"At the heart of the stack is a low-level software infrastructure called "
"Interface for Heterogeneous Kernels (IHK). IHK is a general framework "
"that provides capabilities for partitioning resources in a many-core "
"environment (e.g.,CPU cores and physical memory) and it enables "
"management of lightweight kernels. IHK can allocate and release host "
"resources dynamically and no reboot of the host machine is required when "
"altering configuration. IHK also provides a low-level inter-kernel "
"messaging infrastructure, called the Inter-Kernel Communication (IKC) "
"layer. An architectural overview of the main system components is shown "
"below."
msgstr ""
#: ../../README_.rst:99
msgid "arch"
msgstr ""
#: ../../README_.rst:101
msgid ""
"McKernel is a lightweight kernel written from scratch. It is designed for"
" HPC and is booted from IHK. McKernel retains a binary compatible ABI "
"with Linux, however, it implements only a small set of performance "
"sensitive system calls and the rest are offloaded to Linux. Specifically,"
" McKernel has its own memory management, it supports processes and multi-"
"threading with a simple round-robin cooperative (tick-less) scheduler, "
"and it implements signaling. It also allows inter-process memory mappings"
" and it provides interfaces to hardware performance counters."
msgstr ""
#: ../../README_.rst:112
msgid "Functionality"
msgstr ""
#: ../../README_.rst:114
msgid ""
"An overview of some of the principal functionalities of the IHK/McKernel "
"stack is provided below."
msgstr ""
#: ../../README_.rst:118
msgid "System Call Offloading"
msgstr ""
#: ../../README_.rst:120
msgid ""
"System call forwarding in McKernel is implemented as follows. When an "
"offloaded system call occurs, McKernel marshals the system call number "
"along with its arguments and sends a message to Linux via a dedicated IKC"
" channel. The corresponding proxy process running on Linux is by default "
"waiting for system call requests through an ioctl() call into IHKs "
"system call delegator kernel module. The delegator kernel modules IKC "
"interrupt handler wakes up the proxy process, which returns to userspace "
"and simply invokes the requested system call. Once it obtains the return "
"value, it instructs the delegator module to send the result back to "
"McKernel, which subsequently passes the value to user-space."
msgstr ""
#: ../../README_.rst:132
msgid "Unified Address Space"
msgstr ""
#: ../../README_.rst:134
msgid ""
"The unified address space model in IHK/McKernel ensures that offloaded "
"system calls can seamlessly resolve arguments even in case of pointers. "
"This mechanism is depicted below and is implemented as follows."
msgstr ""
#: ../../README_.rst:141
msgid "unified_ap"
msgstr ""
#: ../../README_.rst:143
msgid ""
"First, the proxy process is compiled as a position independent binary, "
"which enables us to map the code and data segments specific to the proxy "
"process to an address range which is explicitly excluded from McKernels "
"user space. The grey box on the right side of the figure demonstrates the"
" excluded region. Second, the entire valid virtual address range of "
"McKernels application user-space is covered by a special mapping in the "
"proxy process for which we use a pseudo file mapping in Linux. This "
"mapping is indicated by the blue box on the left side of the figure."
msgstr ""
#: ../../README_.rst:153
msgid "Installation"
msgstr ""
#: ../../README_.rst:155
msgid ""
"For a smooth experience, we recommend the following combination of OS "
"distributions and platforms:"
msgstr ""
#: ../../README_.rst:158
msgid "CentOS 7.3+ running on Intel Xeon, Xeon Phi, Fujitsu A64FX"
msgstr ""
#: ../../README_.rst:161
msgid "1. Change SELinux settings"
msgstr ""
#: ../../README_.rst:163
msgid "Log in as the root and disable SELinux:"
msgstr ""
#: ../../README_.rst:169
msgid "Change the file to SELINUX=disabled"
msgstr ""
#: ../../README_.rst:172
msgid "2. Reboot the host machine"
msgstr ""
#: ../../README_.rst:179
msgid "3. Prepare packages, kernel symbol table file"
msgstr ""
#: ../../README_.rst:181
msgid "You will need the following packages installed:"
msgstr ""
#: ../../README_.rst:187
msgid ""
"Note that to install libdwarf-devel to RHEL-8.2, you need to enable the "
"CodeReady Linux Builder (CLB) repository and the EPEL repository with the"
" following commands:"
msgstr ""
#: ../../README_.rst:195
msgid "Grant read permission to the System.map file of your kernel version:"
msgstr ""
#: ../../README_.rst:202
msgid "4. Obtain sources and compile the kernel"
msgstr ""
#: ../../README_.rst:204
msgid "Clone the source code:"
msgstr ""
#: ../../README_.rst:212
msgid "(Optional) Checkout to the specific branch or version:"
msgstr ""
#: ../../README_.rst:220
msgid ""
"Foe example, if you want to try the development branch, use “development”"
" as the pathspec. If you want to try the prerelease version 1.7.0-0.2, "
"use “1.7.0-0.2”."
msgstr ""
#: ../../README_.rst:225
msgid "4.1 Install with cmake"
msgstr ""
#: ../../README_.rst:227
msgid "Configure and compile:"
msgstr ""
#: ../../README_.rst:235
msgid ""
"The IHK kernel modules and McKernel kernel image should be installed "
"under the **ihk+mckernel** folder in your home directory."
msgstr ""
#: ../../README_.rst:239
msgid "4.2 Install with rpm"
msgstr ""
#: ../../README_.rst:241
msgid "Build rpm:"
msgstr ""
#: ../../README_.rst:252
msgid ""
"The IHK kernel modules and McKernel kernel image are installed under the "
"system directory."
msgstr ""
#: ../../README_.rst:256
msgid "5. Boot McKernel"
msgstr ""
#: ../../README_.rst:258
msgid ""
"A boot script called mcreboot.sh is provided under sbin in the install "
"folder. To boot on logical CPU 1 with 512MB of memory, use the following "
"invocation:"
msgstr ""
#: ../../README_.rst:268
msgid ""
"You should see something similar like this if you display the McKernels "
"kernel message log:"
msgstr ""
#: ../../README_.rst:296
msgid "6. Run a simple program on McKernel"
msgstr ""
#: ../../README_.rst:298
msgid ""
"The mcexec command line tool (which is also the Linux proxy process) can "
"be used for executing applications on McKernel:"
msgstr ""
#: ../../README_.rst:307
msgid "7. Shutdown McKernel"
msgstr ""
#: ../../README_.rst:309
msgid ""
"Finally, to shutdown McKernel and release CPU/memory resources back to "
"Linux use the following command:"
msgstr ""
#: ../../README_.rst:317
msgid "8. Advanced: Enable Utility Thread offloading Interface (UTI)"
msgstr ""
#: ../../README_.rst:319
msgid ""
"UTI enables a runtime such as MPI runtime to spawn utility threads such "
"as MPI asynchronous progress threads to Linux cores."
msgstr ""
#: ../../README_.rst:323
msgid "8.1 Install capstone"
msgstr ""
#: ../../README_.rst:325
msgid "Install EPEL capstone-devel:"
msgstr ""
#: ../../README_.rst:333
msgid "8.2 Install syscall_intercept"
msgstr ""
#: ../../README_.rst:342
msgid "8.3 Install UTI for McKernel"
msgstr ""
#: ../../README_.rst:344
msgid "Install:"
msgstr ""
#: ../../README_.rst:354
msgid "8.4 Install McKernel"
msgstr ""
#: ../../README_.rst:361
msgid "8.5 Run executable"
msgstr ""
#: ../../README_.rst:368
msgid "8.6 Install UTI for Linux for performance comparison"
msgstr ""
#: ../../README_.rst:370
msgid "Install by make:"
msgstr ""
#: ../../README_.rst:379
msgid "Install by rpm:"
msgstr ""
#: ../../README_.rst:391
msgid "The Team"
msgstr ""
#: ../../README_.rst:393
msgid ""
"The McKernel project was started at The University of Tokyo and currently"
" it is mainly developed at RIKEN. Some of our collaborators include:"
msgstr ""
#: ../../README_.rst:397
msgid "Hitachi"
msgstr ""
#: ../../README_.rst:398
msgid "Fujitsu"
msgstr ""
#: ../../README_.rst:399
msgid "CEA (France)"
msgstr ""
#: ../../README_.rst:400
msgid "NEC"
msgstr ""
#: ../../README_.rst:403
msgid "License"
msgstr ""
#: ../../README_.rst:405
msgid "McKernel is GPL licensed, as found in the LICENSE file."
msgstr ""
#: ../../README_.rst:408
msgid "Contact"
msgstr ""
#: ../../README_.rst:410
msgid ""
"Please give your feedback to us via one of the following mailing lists. "
"Subscription via `www.pccluster.org "
"<http://www.pccluster.org/mailman/listinfo/mckernel-users>`__ is needed."
msgstr ""
#: ../../README_.rst:415
msgid "English: mckernel-users@pccluster.org"
msgstr ""
#: ../../README_.rst:416
msgid "Japanese: mckernel-users-jp@pccluster.org"
msgstr ""

View File

@ -0,0 +1,101 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2020, Masamichi Takagi, Balazs Gerofi, Yutaka Ishikawa
# This file is distributed under the same license as the IHK/McKernel
# package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: IHK/McKernel \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-08-04 16:40+0900\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.7.0\n"
#: ../../archtecture.rst:2
msgid "Architectural Overview"
msgstr ""
#: ../../archtecture.rst:4
msgid ""
"At the heart of the stack is a low-level software infrastructure called "
"Interface for Heterogeneous Kernels (IHK). IHK is a general framework "
"that provides capabilities for partitioning resources in a many-core "
"environment (e.g.,CPU cores and physical memory) and it enables "
"management of lightweight kernels. IHK can allocate and release host "
"resources dynamically and no reboot of the host machine is required when "
"altering configuration. IHK also provides a low-level inter-kernel "
"messaging infrastructure, called the Inter-Kernel Communication (IKC) "
"layer. An architectural overview of the main system components is shown "
"below."
msgstr ""
#: ../../archtecture.rst:18
msgid ""
"McKernel is a lightweight kernel written from scratch. It is designed for"
" HPC and is booted from IHK. McKernel retains a binary compatible ABI "
"with Linux, however, it implements only a small set of performance "
"sensitive system calls and the rest are offloaded to Linux. Specifically,"
" McKernel has its own memory management, it supports processes and multi-"
"threading with a simple round-robin cooperative (tick-less) scheduler, "
"and it implements signaling. It also allows inter-process memory mappings"
" and it provides interfaces to hardware performance counters."
msgstr ""
#: ../../archtecture.rst:29
msgid "Functionality"
msgstr ""
#: ../../archtecture.rst:31
msgid ""
"An overview of some of the principal functionalities of the IHK/McKernel "
"stack is provided below."
msgstr ""
#: ../../archtecture.rst:35
msgid "System Call Offloading"
msgstr ""
#: ../../archtecture.rst:37
msgid ""
"System call forwarding in McKernel is implemented as follows. When an "
"offloaded system call occurs, McKernel marshals the system call number "
"along with its arguments and sends a message to Linux via a dedicated IKC"
" channel. The corresponding proxy process running on Linux is by default "
"waiting for system call requests through an ioctl() call into IHKs "
"system call delegator kernel module. The delegator kernel modules IKC "
"interrupt handler wakes up the proxy process, which returns to userspace "
"and simply invokes the requested system call. Once it obtains the return "
"value, it instructs the delegator module to send the result back to "
"McKernel, which subsequently passes the value to user-space."
msgstr ""
#: ../../archtecture.rst:49
msgid "Unified Address Space"
msgstr ""
#: ../../archtecture.rst:51
msgid ""
"The unified address space model in IHK/McKernel ensures that offloaded "
"system calls can seamlessly resolve arguments even in case of pointers. "
"This mechanism is depicted below and is implemented as follows."
msgstr ""
#: ../../archtecture.rst:58
msgid ""
"First, the proxy process is compiled as a position independent binary, "
"which enables us to map the code and data segments specific to the proxy "
"process to an address range which is explicitly excluded from McKernels "
"user space. The grey box on the right side of the figure demonstrates the"
" excluded region. Second, the entire valid virtual address range of "
"McKernels application user-space is covered by a special mapping in the "
"proxy process for which we use a pseudo file mapping in Linux. This "
"mapping is indicated by the blue box on the left side of the figure."
msgstr ""

View File

@ -0,0 +1,79 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2020, Masamichi Takagi, Balazs Gerofi, Yutaka Ishikawa
# This file is distributed under the same license as the IHK/McKernel
# package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: IHK/McKernel \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-08-04 16:40+0900\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.7.0\n"
#: ../../background.rst:2
msgid "Background and Motivation"
msgstr ""
#: ../../background.rst:4
msgid ""
"With the growing complexity of high-end supercomputers, the current "
"system software stack faces significant challenges as we move forward to "
"exascale and beyond. The necessity to deal with extreme degree of "
"parallelism, heterogeneous architectures, multiple levels of memory "
"hierarchy, power constraints, etc., advocates operating systems that can "
"rapidly adapt to new hardware requirements, and that can support novel "
"programming paradigms and runtime systems. On the other hand, a new class"
" of more dynamic and complex applications are also on the horizon, with "
"an increasing demand for application constructs such as in-situ analysis,"
" workflows, elaborate monitoring and performance tools. This complexity "
"relies not only on the rich features of POSIX, but also on the Linux APIs"
" (such as the */proc*, */sys* filesystems, etc.) in particular."
msgstr ""
#: ../../background.rst:19
msgid "Two Traditional HPC OS Approaches"
msgstr ""
#: ../../background.rst:21
msgid ""
"Traditionally, light-weight operating systems specialized for HPC "
"followed two approaches to tackle scalable execution of large-scale "
"applications. In the full weight kernel (FWK) approach, a full Linux "
"environment is taken as the basis, and features that inhibit attaining "
"HPC scalability are removed, i.e., making it light-weight. The pure "
"light-weight kernel (LWK) approach, on the other hand, starts from "
"scratch and effort is undertaken to add sufficient functionality so that "
"it provides a familiar API, typically something close to that of a "
"general purpose OS, while at the same time it retains the desired "
"scalability and reliability attributes. Neither of these approaches "
"yields a fully Linux compatible environment."
msgstr ""
#: ../../background.rst:34
msgid "The Multi-kernel Approach"
msgstr ""
#: ../../background.rst:36
msgid ""
"A hybrid approach recognized recently by the system software community is"
" to run Linux simultaneously with a lightweight kernel on compute nodes "
"and multiple research projects are now pursuing this direction. The basic"
" idea is that simulations run on an HPC tailored lightweight kernel, "
"ensuring the necessary isolation for noiseless execution of parallel "
"applications, but Linux is leveraged so that the full POSIX API is "
"supported. Additionally, the small code base of the LWK can also "
"facilitate rapid prototyping for new, exotic hardware features. "
"Nevertheless, the questions of how to share node resources between the "
"two types of kernels, where do device drivers execute, how exactly do the"
" two kernels interact with each other and to what extent are they "
"integrated, remain subjects of ongoing debate."
msgstr ""

View File

@ -0,0 +1,57 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2020, Masamichi Takagi, Balazs Gerofi, Yutaka Ishikawa
# This file is distributed under the same license as the IHK/McKernel
# package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: IHK/McKernel \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-08-04 16:40+0900\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.7.0\n"
#: ../../boot_run_shutdown.rst:2
msgid "Boot McKernel"
msgstr ""
#: ../../boot_run_shutdown.rst:4
msgid ""
"A boot script called ``mcreboot.sh`` is provided under ``sbin`` in the "
"install folder. To boot on logical CPU 1 with 512MB of memory, use the "
"following invocation:"
msgstr ""
#: ../../boot_run_shutdown.rst:14
msgid ""
"You should see something similar like this if you display the McKernels "
"kernel message log:"
msgstr ""
#: ../../boot_run_shutdown.rst:42
msgid "Run a simple program on McKernel"
msgstr ""
#: ../../boot_run_shutdown.rst:44
msgid ""
"The mcexec command line tool (which is also the Linux proxy process) can "
"be used for executing applications on McKernel:"
msgstr ""
#: ../../boot_run_shutdown.rst:53
msgid "Shutdown McKernel"
msgstr ""
#: ../../boot_run_shutdown.rst:55
msgid ""
"Finally, to shutdown McKernel and release CPU/memory resources back to "
"Linux use the following command:"
msgstr ""

View File

@ -0,0 +1,39 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2020, Masamichi Takagi, Balazs Gerofi, Yutaka Ishikawa
# This file is distributed under the same license as the IHK/McKernel
# package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: IHK/McKernel \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-08-04 16:40+0900\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.7.0\n"
#: ../../contact.rst:2
msgid "Contact"
msgstr ""
#: ../../contact.rst:4
msgid ""
"Please give your feedback to us via one of the following mailing lists. "
"Subscription via `www.pccluster.org "
"<http://www.pccluster.org/mailman/listinfo/mckernel-users>`__ is needed."
msgstr ""
#: ../../contact.rst:9
msgid "English: mckernel-users@pccluster.org"
msgstr ""
#: ../../contact.rst:10
msgid "Japanese: mckernel-users-jp@pccluster.org"
msgstr ""

View File

@ -0,0 +1,59 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2020, Masamichi Takagi, Balazs Gerofi, Yutaka Ishikawa
# This file is distributed under the same license as the IHK/McKernel
# package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: IHK/McKernel \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-08-04 16:40+0900\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.7.0\n"
#: ../../summary.rst:1
msgid ""
"IHK/McKernel is a light-weight multi-kernel operating system designed for"
" high-end supercomputing. It runs Linux and McKernel, a light-weight "
"kernel (LWK), side-by-side inside compute nodes and aims at the "
"following:"
msgstr ""
#: ../../summary.rst:6
msgid ""
"Provide scalable and consistent execution of large-scale parallel "
"scientific applications, but at the same time maintain the ability to "
"rapidly adapt to new hardware features and emerging programming models"
msgstr ""
#: ../../summary.rst:10
msgid ""
"Provide efficient memory and device management so that resource "
"contention and data movement are minimized at the system level"
msgstr ""
#: ../../summary.rst:12
msgid ""
"Eliminate OS noise by isolating OS services in Linux and provide jitter "
"free execution on the LWK"
msgstr ""
#: ../../summary.rst:14
msgid ""
"Support the full POSIX/Linux APIs by selectively offloading (slow-path) "
"system calls to Linux"
msgstr ""
#: ../../cover.rst:5
msgid ""
"See `Quick Guide -- Installation <quick.html#installation>`__ for jump "
"start."
msgstr ""

View File

@ -0,0 +1,28 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2020, Masamichi Takagi, Balazs Gerofi, Yutaka Ishikawa
# This file is distributed under the same license as the IHK/McKernel
# package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: IHK/McKernel \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-08-04 16:40+0900\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.7.0\n"
#: ../../doc.rst:2
msgid "Documentation"
msgstr ""
#: ../../doc.rst:4
msgid "Documentation is available `here <https://ihkmckernel.readthedocs.io>`__."
msgstr ""

View File

@ -0,0 +1,40 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2020, Masamichi Takagi, Balazs Gerofi, Yutaka Ishikawa
# This file is distributed under the same license as the IHK/McKernel
# package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: IHK/McKernel \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-08-04 16:40+0900\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.7.0\n"
#: ../../ihk_developers.rst:6
msgid "External Specs"
msgstr ""
#: ../../ihk_developers.rst:9
msgid "Overview"
msgstr ""
#: ../../ihk_developers.rst:12
msgid "Function Specs"
msgstr ""
#: ../../ihk_developers.rst:15
msgid "Command / Daemon Specs"
msgstr ""
#: ../../ihk_developers.rst:18
msgid "Booting LWK"
msgstr ""

View File

@ -0,0 +1,95 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2020, Masamichi Takagi, Balazs Gerofi, Yutaka Ishikawa
# This file is distributed under the same license as the IHK/McKernel
# package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: IHK/McKernel \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-08-07 10:00+0900\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.7.0\n"
#: ../../index.rst:12
msgid "Quick Guide"
msgstr "クイックガイド"
#: ../../index.rst:18
msgid "Users' Guide"
msgstr "ユーザガイド"
#: ../../index.rst:24
msgid "Operators' Guide"
msgstr "運用ガイド"
#: ../../index.rst:30
msgid "IHK Developers' Guide"
msgstr ""
#: ../../index.rst:36
msgid "McKernel Developers' Guide"
msgstr ""
#: ../../index.rst:42
msgid "IHK Specifications"
msgstr ""
#: ../../index.rst:48
msgid "McKernel Specifications"
msgstr ""
#: ../../index.rst:54
msgid "What's New"
msgstr ""
#: ../../index.rst:8
msgid "IHK/McKernel"
msgstr ""
#: ../../summary.rst:1
msgid ""
"IHK/McKernel is a light-weight multi-kernel operating system designed for"
" high-end supercomputing. It runs Linux and McKernel, a light-weight "
"kernel (LWK), side-by-side inside compute nodes and aims at the "
"following:"
msgstr ""
#: ../../summary.rst:6
msgid ""
"Provide scalable and consistent execution of large-scale parallel "
"scientific applications, but at the same time maintain the ability to "
"rapidly adapt to new hardware features and emerging programming models"
msgstr ""
#: ../../summary.rst:10
msgid ""
"Provide efficient memory and device management so that resource "
"contention and data movement are minimized at the system level"
msgstr ""
#: ../../summary.rst:12
msgid ""
"Eliminate OS noise by isolating OS services in Linux and provide jitter "
"free execution on the LWK"
msgstr ""
#: ../../summary.rst:14
msgid ""
"Support the full POSIX/Linux APIs by selectively offloading (slow-path) "
"system calls to Linux"
msgstr ""
#: ../../cover.rst:5
msgid ""
"See `Quick Guide -- Installation <quick.html#installation>`__ for jump "
"start."
msgstr ""

View File

@ -0,0 +1,191 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2020, Masamichi Takagi, Balazs Gerofi, Yutaka Ishikawa
# This file is distributed under the same license as the IHK/McKernel
# package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: IHK/McKernel \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-08-04 16:40+0900\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.7.0\n"
#: ../../install.rst:4
msgid "Installation"
msgstr "インストール"
#: ../../install.rst:6
msgid "The following OS distributions and platforms are recommended:"
msgstr "推奨OSディストリビューションとプロセッサは以下の通り。"
#: ../../install.rst:8
msgid "OS distribution"
msgstr ""
#: ../../install.rst:10
msgid "CentOS 7.3 or later"
msgstr ""
#: ../../install.rst:11
msgid "RHEL 7.3 or later"
msgstr ""
#: ../../install.rst:13
msgid "Platform"
msgstr ""
#: ../../install.rst:15
msgid "Intel Xeon"
msgstr ""
#: ../../install.rst:16
msgid "Intel Xeon Phi"
msgstr ""
#: ../../install.rst:17
msgid "Fujitsu A64FX"
msgstr ""
#: ../../install.rst:20
msgid "Prepare files for building McKernel"
msgstr ""
#: ../../install.rst:22
msgid ""
"Grant read permission to the System.map file of your kernel version on "
"the build machine:"
msgstr ""
#: ../../install.rst:28
msgid "Install the following packages to the build machine:"
msgstr ""
#: ../../install.rst:35 ../../install.rst:179
msgid "When having access to repositories"
msgstr ""
#: ../../install.rst:37 ../../install.rst:181
msgid "On RHEL 8, enable the CodeReady Linux Builder (CLB) repository:"
msgstr ""
#: ../../install.rst:43 ../../install.rst:187
msgid "On CentOS 8, enable the PowerTools repository:"
msgstr ""
#: ../../install.rst:49 ../../install.rst:193
msgid "Install with yum:"
msgstr ""
#: ../../install.rst:56 ../../install.rst:200
msgid "When not having access to repositories"
msgstr ""
#: ../../install.rst:58
msgid ""
"Ask the system administrator to install them. Note that ``libdwarf-"
"devel`` is in the CodeReady Linux Builder repository on RHEL 8 or in the "
"PowerTools repository on CentOS 8."
msgstr ""
#: ../../install.rst:61
msgid "Clone, compile, install"
msgstr ""
#: ../../install.rst:63
msgid "Clone the source code:"
msgstr ""
#: ../../install.rst:71
msgid "(Optional) Checkout to the specific branch or version:"
msgstr ""
#: ../../install.rst:79
msgid ""
"Foe example, if you want to try the development branch, use “development”"
" as the pathspec. If you want to try the prerelease version 1.7.0-0.2, "
"use “1.7.0-0.2”."
msgstr ""
#: ../../install.rst:83
msgid "Move to build directory:"
msgstr ""
#: ../../install.rst:89
msgid "Run cmake:"
msgstr ""
#: ../../install.rst:92 ../../install.rst:135
msgid "When not cross-compiling:"
msgstr ""
#: ../../install.rst:99 ../../install.rst:142
msgid "When cross-compiling:"
msgstr ""
#: ../../install.rst:111
msgid "Install with cmake"
msgstr ""
#: ../../install.rst:113
msgid "Install with make:"
msgstr ""
#: ../../install.rst:119
msgid ""
"The kernel modules and McKernel kernel image should be installed under "
"the **ihk+mckernel** folder in your home directory."
msgstr ""
#: ../../install.rst:123
msgid "Install with rpm"
msgstr ""
#: ../../install.rst:125
msgid "Create the tarball and the spec file:"
msgstr ""
#: ../../install.rst:132
msgid "Create the rpm package:"
msgstr ""
#: ../../install.rst:148
msgid "Install the rpm package:"
msgstr ""
#: ../../install.rst:154
msgid ""
"The kernel modules and McKernel kernel image are installed under the "
"standard system directories."
msgstr ""
#: ../../install.rst:158
msgid "Prepare files and change settings for installing McKernel"
msgstr ""
#: ../../install.rst:160
msgid "Disable SELinux of the compute nodes:"
msgstr ""
#: ../../install.rst:166
msgid "Change the file to SELINUX=disabled. And then reboot the compute nodes:"
msgstr ""
#: ../../install.rst:172
msgid "Install the following packages to the compute nodes:"
msgstr ""
#: ../../install.rst:202
msgid ""
"Ask the system administrator to install them. Note that ``libdwarf`` is "
"in the CodeReady Linux Builder repository on RHEL 8 or in the PowerTools "
"repository on CentOS 8."
msgstr ""

View File

@ -0,0 +1,28 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2020, Masamichi Takagi, Balazs Gerofi, Yutaka Ishikawa
# This file is distributed under the same license as the IHK/McKernel
# package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: IHK/McKernel \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-08-04 16:40+0900\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.7.0\n"
#: ../../license.rst:2
msgid "License"
msgstr ""
#: ../../license.rst:4
msgid "McKernel is GPL licensed, as found in the LICENSE file."
msgstr ""

View File

@ -0,0 +1,20 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2020, Masamichi Takagi, Balazs Gerofi, Yutaka Ishikawa
# This file is distributed under the same license as the IHK/McKernel
# package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: IHK/McKernel \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-08-04 16:40+0900\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.7.0\n"

View File

@ -0,0 +1,28 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2020, Masamichi Takagi, Balazs Gerofi, Yutaka Ishikawa
# This file is distributed under the same license as the IHK/McKernel
# package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: IHK/McKernel \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-08-04 16:40+0900\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.7.0\n"
#: ../../mckernel_developers.rst:6
msgid "Interfaces"
msgstr ""
#: ../../mckernel_developers.rst:9
msgid "Interface details"
msgstr ""

View File

@ -0,0 +1,886 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2020, Masamichi Takagi, Balazs Gerofi, Yutaka Ishikawa
# This file is distributed under the same license as the IHK/McKernel
# package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: IHK/McKernel \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-08-07 10:26+0900\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.7.0\n"
#: ../../operators.rst:5
#, fuzzy
msgid "This document will explain how to operate system with McKernel."
msgstr "McKernelを用いたシステムを運用するシステム管理者を対象として、運用手順を説明する。"
#: ../../operators.rst:8
msgid "Installation"
msgstr "インストール"
#: ../../operators.rst:10
msgid "See `Quick Guide -- Installation <quick.html#installation>`__."
msgstr "`クイックガイド ― インストール <quick.html#installation>`__ に記載する。"
#: ../../uti.rst:2
msgid "Advanced: Enable Utility Thread offloading Interface (UTI)"
msgstr ""
#: ../../uti.rst:4
msgid ""
"UTI enables a runtime such as MPI runtime to spawn utility threads such "
"as MPI asynchronous progress threads to Linux cores."
msgstr ""
#: ../../uti.rst:8
msgid "Install capstone"
msgstr ""
#: ../../uti.rst:11 ../../uti.rst:22
msgid "When compute nodes don't have access to repositories"
msgstr ""
#: ../../uti.rst:13
msgid "Install EPEL capstone-devel:"
msgstr ""
#: ../../uti.rst:24
msgid ""
"Ask the system administrator to install ``capstone-devel``. Note that it "
"is in the EPEL repository."
msgstr ""
#: ../../uti.rst:28
msgid "Install syscall_intercept"
msgstr ""
#: ../../uti.rst:37
msgid "Install UTI for McKernel"
msgstr ""
#: ../../uti.rst:39
msgid "Install:"
msgstr ""
#: ../../uti.rst:49
msgid "Install McKernel"
msgstr ""
#: ../../uti.rst:51
msgid "Add ``-DENABLE_UTI=ON`` option to ``cmake``:"
msgstr ""
#: ../../uti.rst:58
msgid "Run programs"
msgstr ""
#: ../../uti.rst:60
msgid "Add ``--enable-uti`` option to ``mcexec``:"
msgstr ""
#: ../../uti.rst:67
msgid "Install UTI for Linux"
msgstr ""
#: ../../uti.rst:69
msgid ""
"You should skip this step if it's already installed as with, for example,"
" Fujitsu Technical Computing Suite."
msgstr ""
#: ../../uti.rst:72
msgid "Install by make"
msgstr ""
#: ../../uti.rst:82
msgid "Install by rpm"
msgstr ""
#: ../../operators.rst:15
msgid "Boot and Shut-down"
msgstr "起動停止"
#: ../../operators.rst:18
msgid "Related files"
msgstr "関連ファイル"
#: ../../operators.rst:20
msgid ""
"In the followings, the install directory of IHK/McKernel is shown as "
"``<install>`` . The kernel modules and their locations are as follows."
msgstr "以降、IHK/McKernelのインストールディレクトリを<install>とする。SMPプロセッサ向け、x86_64アーキ向けの関連ファイルの場所は以下の通り。"
#: ../../operators.rst:24
msgid "<install>/kmod/ihk.ko"
msgstr ""
#: ../../operators.rst:24
msgid "IHK-master core"
msgstr ""
#: ../../operators.rst:26
msgid "|ihk-smp|"
msgstr ""
#: ../../operators.rst:26
msgid "IHK-master driver"
msgstr ""
#: ../../operators.rst:29
msgid "|mcctrl|"
msgstr ""
#: ../../operators.rst:29
msgid "Delegator module"
msgstr ""
#: ../../operators.rst:32
msgid "|mckernel.img|"
msgstr ""
#: ../../operators.rst:32
msgid "Kernel Image"
msgstr "カーネルイメージ"
#: ../../operators.rst:40
msgid "The commands and daemons for operation and their locations are as follows."
msgstr "運用向けコマンド・デーモンのファイルの場所は以下の通り。"
#: ../../operators.rst:43
msgid "|mcreboot|"
msgstr ""
#: ../../operators.rst:43
msgid "Boot script"
msgstr "起動スクリプト"
#: ../../operators.rst:46
msgid "|mcstop|"
msgstr ""
#: ../../operators.rst:46
msgid "Shutdown script"
msgstr "シャットダウンスクリプト"
#: ../../operators.rst:49
msgid "<install>/bin/mcexec"
msgstr ""
#: ../../operators.rst:49
msgid "Process invocation command"
msgstr "プロセス起動コマンド"
#: ../../operators.rst:51
msgid "<install>/bin/eclair"
msgstr ""
#: ../../operators.rst:51
msgid "Kernel dump analysis tool"
msgstr "カーネルダンプ解析ツール"
#: ../../operators.rst:53
msgid "|vmcore2mckdump|"
msgstr ""
#: ../../operators.rst:53
msgid "Kernel dump format conversion tool"
msgstr "カーネルダンプ形式変換ツール"
#: ../../operators.rst:60
msgid "以下、関連コマンドおよび関連関数のインターフェイスを説明する。"
msgstr ""
#: ../../operators.rst:63
msgid "インターフェイス"
msgstr ""
#: ../../operators.rst:66
msgid "カーネル引数"
msgstr ""
#: ../../operators.rst:68
msgid "McKernelのカーネル引数を表 :numref:`tab-kargs` に示す。"
msgstr ""
#: ../../operators.rst:72
msgid "McKernelのカーネル引数"
msgstr ""
#: ../../operators.rst:75
msgid "hidos"
msgstr ""
#: ../../operators.rst:75
msgid "IKCを有効にする。"
msgstr ""
#: ../../operators.rst:77
msgid "|dlv|"
msgstr ""
#: ../../operators.rst
msgid "Linuxのpanicハンドラ経由でダンプを行った場合の、ダ"
msgstr ""
#: ../../operators.rst
msgid "ンプ対象とするメモリ領域の種類を<level>に設定する。"
msgstr ""
#: ../../operators.rst
msgid "設定可能な値は以下の通り。"
msgstr ""
#: ../../operators.rst:83 ../../operators.rst:164 ../../operators.rst:196
#: ../../operators.rst:234
msgid "0"
msgstr ""
#: ../../operators.rst:84 ../../operators.rst:165
msgid "IHKがMcKernelに割り当てたメモリ領域を出力する"
msgstr ""
#: ../../operators.rst:85 ../../operators.rst:166
msgid "24"
msgstr ""
#: ../../operators.rst:86 ../../operators.rst:167
msgid "カーネルが使用しているメモリ領域を出力する"
msgstr ""
#: ../../operators.rst:88 ../../operators.rst:169
msgid "指定がなかった場合は24が用いられる。"
msgstr ""
#: ../../operators.rst:90
msgid "|allow|"
msgstr ""
#: ../../operators.rst
msgid "McKernelに割り当てられたCPU数より大きい数のスレッド"
msgstr ""
#: ../../operators.rst
msgid "またはプロセスの生成を許可する。この引数が指定され"
msgstr ""
#: ../../operators.rst
msgid "ない場合に、CPU数より大きい数のスレッドまたはプロセ"
msgstr ""
#: ../../operators.rst
msgid "スをclone(), fork(), vfork()などで生成しようとする"
msgstr ""
#: ../../operators.rst
msgid "と、当該システムコールがEINVALエラーを返す。"
msgstr ""
#: ../../operators.rst:102
msgid "ブートスクリプト"
msgstr "ブートスクリプト"
#: ../../operators.rst:105 ../../operators.rst:207
msgid "書式"
msgstr ""
#: ../../operators.rst:113 ../../operators.rst:217
msgid "オプション"
msgstr ""
#: ../../operators.rst:116
msgid "|opt-c|"
msgstr ""
#: ../../operators.rst
msgid "McKernelに割り当てるCPUのリストを指定する。フォー"
msgstr ""
#: ../../operators.rst
msgid "マットは以下の通り。"
msgstr ""
#: ../../operators.rst
msgid "<CPU logical id>,<CPU logical id>...または"
msgstr ""
#: ../../operators.rst
msgid "<CPU logical id>-<CPU logical id>,<CPU logical id>"
msgstr ""
#: ../../operators.rst
msgid "-<CPU logical id>...または両者の混合。"
msgstr ""
#: ../../operators.rst:122
msgid "|opt-r|"
msgstr ""
#: ../../operators.rst
msgid "McKernelのCPUがIKCメッセージを送るLinux"
msgstr ""
#: ../../operators.rst
msgid "CPUを指定する。フォーマットは以下の通り。"
msgstr ""
#: ../../operators.rst
msgid "<CPU list>:<CPU id>+<CPU list>:<CPU id>..."
msgstr ""
#: ../../operators.rst
msgid "<CPU list>のフォーマットは-cオプションにおけるもの"
msgstr ""
#: ../../operators.rst
msgid "と同じである。"
msgstr ""
#: ../../operators.rst
msgid "各<CPU list>:<CPU id>は<CPU list>で示されるMcKernel"
msgstr ""
#: ../../operators.rst
msgid "のCPUが<CPU logical id>で示されるLinuxのCPUにIKC"
msgstr ""
#: ../../operators.rst
msgid "メッセージを送信することを意味する。"
msgstr ""
#: ../../operators.rst:131
msgid "|opt-m|"
msgstr ""
#: ../../operators.rst
msgid "McKernelに割り当てるメモリ領域を指定する。フォーマッ"
msgstr ""
#: ../../operators.rst
msgid "トは以下の通り。"
msgstr ""
#: ../../operators.rst
msgid "<size>@<NUMA-id>, <size>@<NUMA-id>..."
msgstr ""
#: ../../operators.rst:135
msgid "|opt-f|"
msgstr ""
#: ../../operators.rst
msgid "ihkmondが使用するsyslogプロトコルのfacilityを指定す"
msgstr ""
#: ../../operators.rst
msgid "る。デフォルトはLOG_LOCAL6。"
msgstr ""
#: ../../operators.rst:138
msgid "|opt-o|"
msgstr ""
#: ../../operators.rst
msgid "IHKのデバイスファイル(/dev/mcd*, /dev/mcos*)のオー"
msgstr ""
#: ../../operators.rst
msgid "ナーとグループの値を<user>[:<group>]の形式で指定す"
msgstr ""
#: ../../operators.rst
msgid "る。デフォルトはmcreboot.shを実行したユーザ。"
msgstr ""
#: ../../operators.rst:142
msgid "|opt-i|"
msgstr ""
#: ../../operators.rst
msgid "ihkmondがハングアップ検知のためにOS状態を確認する時"
msgstr ""
#: ../../operators.rst
msgid "間間隔を秒単位で指定する。-1が指定された場合はハン"
msgstr ""
#: ../../operators.rst
msgid "グアップ検知を行わない。指定がない場合はハングアッ"
msgstr ""
#: ../../operators.rst
msgid "プ検知を行わない。"
msgstr ""
#: ../../operators.rst:147
msgid "|opt-k|"
msgstr ""
#: ../../operators.rst
msgid "カーネルメッセージの/dev/logへのリダイレクト有無を"
msgstr ""
#: ../../operators.rst
msgid "指定する。0が指定された場合はリダイレクトを行わず、"
msgstr ""
#: ../../operators.rst
msgid "0以外が指定された場合はリダイレクトを行う。指定がな"
msgstr ""
#: ../../operators.rst
msgid "い場合はリダイレクトを行わない。"
msgstr ""
#: ../../operators.rst:152
msgid "-q <irq>"
msgstr ""
#: ../../operators.rst
msgid "IHKが使用するIRQ番号を指定する。指定がない場合は"
msgstr ""
#: ../../operators.rst
msgid "64-255の範囲で空いているものを使用する。"
msgstr ""
#: ../../operators.rst:155
msgid "-t"
msgstr ""
#: ../../operators.rst
msgid "x86_64アーキテクチャのみTurbo"
msgstr ""
#: ../../operators.rst
msgid "Boostをオンにする。デフォルトはオフ。"
msgstr ""
#: ../../operators.rst:158
msgid "-d <level>"
msgstr ""
#: ../../operators.rst:171
msgid "-O"
msgstr ""
#: ../../operators.rst
msgid "またはプロセスの生成を許可する。指定がない場合は許可"
msgstr ""
#: ../../operators.rst
msgid "しない。すなわち、CPU数より大きい数のスレッドまたは"
msgstr ""
#: ../../operators.rst
msgid "プロセスを生成しようとするとエラーとなる。"
msgstr ""
#: ../../operators.rst:187 ../../operators.rst:224
msgid "説明"
msgstr ""
#: ../../operators.rst:189
msgid ""
"McKernel関連カーネルモジュールをinsmodし、<cpulist>で指定されたCPUと<memlist>で指定されたメモリ領域からなるパーティションを作成し、IKC"
" mapを<ikcmap>に設定し、前記パーティションにMcKernelをブートする。"
msgstr ""
#: ../../operators.rst:193 ../../operators.rst:231
msgid "戻り値"
msgstr ""
#: ../../operators.rst:196 ../../operators.rst:234
msgid "正常終了"
msgstr ""
#: ../../operators.rst:198 ../../operators.rst:236
msgid "0以外"
msgstr ""
#: ../../operators.rst:198 ../../operators.rst:236
msgid "エラー"
msgstr ""
#: ../../operators.rst:202
msgid "シャットダウンスクリプト"
msgstr "シャットダウンスクリプト"
#: ../../operators.rst:219
msgid "なし"
msgstr ""
#: ../../operators.rst:226
msgid "McKernelをシャットダウンし、McKernel用パーティションを削除し、関連カーネルモジュールをrmmodする。"
msgstr ""
#: ../../operators.rst:240
msgid "プロセス起動コマンド"
msgstr ""
#: ../../operators.rst:245
msgid "ダンプ解析コマンド"
msgstr ""
#: ../../operators.rst:250
msgid "ダンプ形式変換コマンド"
msgstr ""
#: ../../operators.rst:255
msgid "ブート手順"
msgstr ""
#: ../../operators.rst:257
msgid "mcreboot.shを用いてブート手順を説明する。"
msgstr ""
#: ../../operators.rst:259 ../../operators.rst:906
msgid "スクリプトは以下の通り。"
msgstr ""
#: ../../operators.rst:852 ../../operators.rst:1050
msgid "手順は以下の通り。"
msgstr ""
#: ../../operators.rst:854
msgid "ihkmondを起動する。ihkmondは任意のタイミングで起動してよい。これは、ihkmondはOSインスタンスの作成を検知して動作を開始するためである。83行目"
msgstr ""
#: ../../operators.rst:856
msgid "Linuxのカーネルバージョンが、mcoverlayfsが動作するものであるかを確認する。200216行目"
msgstr ""
#: ../../operators.rst:858
msgid "irqbalanceを停止する。251257行目"
msgstr ""
#: ../../operators.rst:860
msgid ""
"/proc/irq/[n]/affinityの設定を保存した上でMcKernel "
"CPUを担当から外す。担当CPUが無くなる場合は、全てのLinux CPUを指定する。269303行目"
msgstr ""
#: ../../operators.rst:864
msgid "ihk.koをinsmodする。307行目"
msgstr ""
#: ../../operators.rst:866
msgid "Linuxによるメモリフラグメンテーションを緩和するために以下を実施する。313320行目"
msgstr ""
#: ../../operators.rst:868
msgid "アクティブでないプロセスを積極的にスワップアウトするように設定する"
msgstr ""
#: ../../operators.rst:870
msgid "クリーンなページキャッシュを無効化し、またdentriesやinodeのslabオブジェクトのうち可能なものを破棄する"
msgstr ""
#: ../../operators.rst:872
msgid "連続する空き領域を結合してより大きな空き領域にまとめる"
msgstr ""
#: ../../operators.rst:874
msgid ""
"ihk-smp-x86.koをinsmodする。340行目ihk-smp-x86.koは関数をihk.koに登録する。このため、ihk-"
"smp-x86.koはihk.koをinsmodした後にinsmodする必要がある。"
msgstr ""
#: ../../operators.rst:876
msgid "メモリを予約する。370行目"
msgstr ""
#: ../../operators.rst:878
msgid "CPUを予約する。374行目"
msgstr ""
#: ../../operators.rst:880
msgid "McKernelのカーネルモジュールmcctrl.koをinsmodする。382行目mcctrl.koはMcKernelブート時に呼ばれる関数をihk.koに登録する。このため、mcctrl.koのinsmodはihk.koのinsmodの後に、またブートの前に行う必要がある。"
msgstr ""
#: ../../operators.rst:882
msgid "OSインスタンスを作成する。406行目"
msgstr ""
#: ../../operators.rst:884
msgid "OSインスタンスにCPUを割り当てる。412行目"
msgstr ""
#: ../../operators.rst:886
msgid "McKernel CPUのIKCメッセージ送信先のLinux CPUを設定する。419行目"
msgstr ""
#: ../../operators.rst:888
msgid "OSインスタンスにメモリを割り当てる。426行目"
msgstr ""
#: ../../operators.rst:890
msgid "カーネルイメージをロードする。432行目"
msgstr ""
#: ../../operators.rst:892
msgid "カーネル引数をカーネルに渡す。438行目"
msgstr ""
#: ../../operators.rst:894
msgid "カーネルをブートする。444行目"
msgstr ""
#: ../../operators.rst:896
msgid ""
"/proc, "
"/sysファイルの準備をする。また、その中でmcoverlayfs.koをinsmodする。mcoverlayfs.koは他モジュールとの依存関係を持たない。454行目から567行目なお、関数インターフェイスでの対応関数はihk_os_create_pseudofs()である。"
msgstr ""
#: ../../operators.rst:898
msgid "irqbalanceを、Linux CPUのみを対象とする設定で開始する。569587行目"
msgstr ""
#: ../../operators.rst:902
msgid "シャットダウン手順"
msgstr ""
#: ../../operators.rst:904
msgid "mcstop+release.shを用いてシャットダウン手順を説明する。"
msgstr ""
#: ../../operators.rst:1052
msgid "ブート時にLinux CPUのみを対象とする設定で開始されたirqbalanceを停止する。2433行目"
msgstr ""
#: ../../operators.rst:1055
msgid "全てのOSインスタンスを破壊する。OSインスタンスに割り当てられていた資源はIHKがLWKのために予約した状態に移行する。3550行目"
msgstr ""
#: ../../operators.rst:1057
msgid "IHKがLWKのために予約していた資源を開放する。5277行目"
msgstr ""
#: ../../operators.rst:1059
msgid "mcctrl.koをrmmodする。81行目"
msgstr ""
#: ../../operators.rst:1061
msgid ""
"/proc, "
"/sysファイルの準備をする。また、その中でmcoverlayfs.koをrmmodする。87100行目なお、関数インターフェイスでの対応関数はihk_os_destroy_pseudofs()である。"
msgstr ""
#: ../../operators.rst:1063
msgid "ihk-smp-x86.koをrmmodする。104行目"
msgstr ""
#: ../../operators.rst:1065
msgid "ihk.koをrmmodする。112行目"
msgstr ""
#: ../../operators.rst:1067
msgid "ihkmondを停止する。121行目"
msgstr ""
#: ../../operators.rst:1069
msgid "/proc/irq/[n]/affinityの設定をブート時に保存しておいたものに戻し、ブート前の設定でirqbalanceを開始する。124135行目"
msgstr ""
#: ../../operators.rst:1071
msgid "Linuxカーネルのスワップアウト積極度の設定をデフォルトの値に戻す。138行目"
msgstr ""
#~ msgid "The following OS distributions and platforms are recommended:"
#~ msgstr ""
#~ msgid "OS distribution"
#~ msgstr ""
#~ msgid "CentOS 7.3 or later"
#~ msgstr ""
#~ msgid "RHEL 7.3 or later"
#~ msgstr ""
#~ msgid "Platform"
#~ msgstr ""
#~ msgid "Intel Xeon"
#~ msgstr ""
#~ msgid "Intel Xeon Phi"
#~ msgstr ""
#~ msgid "Fujitsu A64FX"
#~ msgstr ""
#~ msgid "Prepare files for building McKernel"
#~ msgstr ""
#~ msgid ""
#~ "Grant read permission to the System.map"
#~ " file of your kernel version on "
#~ "the build machine:"
#~ msgstr ""
#~ msgid "Install the following packages to the build machine:"
#~ msgstr ""
#~ msgid "When having access to repositories"
#~ msgstr ""
#~ msgid "On RHEL 8, enable the CodeReady Linux Builder (CLB) repository:"
#~ msgstr ""
#~ msgid "On CentOS 8, enable the PowerTools repository:"
#~ msgstr ""
#~ msgid "Install with yum:"
#~ msgstr ""
#~ msgid "When not having access to repositories"
#~ msgstr ""
#~ msgid ""
#~ "Ask the system administrator to install"
#~ " them. Note that ``libdwarf-devel`` "
#~ "is in the CodeReady Linux Builder "
#~ "repository on RHEL 8 or in the "
#~ "PowerTools repository on CentOS 8."
#~ msgstr ""
#~ msgid "Clone, compile, install"
#~ msgstr ""
#~ msgid "Clone the source code:"
#~ msgstr ""
#~ msgid "(Optional) Checkout to the specific branch or version:"
#~ msgstr ""
#~ msgid ""
#~ "Foe example, if you want to try"
#~ " the development branch, use “development”"
#~ " as the pathspec. If you want "
#~ "to try the prerelease version 1.7.0-0.2,"
#~ " use “1.7.0-0.2”."
#~ msgstr ""
#~ msgid "Move to build directory:"
#~ msgstr ""
#~ msgid "Run cmake:"
#~ msgstr ""
#~ msgid "When not cross-compiling:"
#~ msgstr ""
#~ msgid "When cross-compiling:"
#~ msgstr ""
#~ msgid "Install with cmake"
#~ msgstr ""
#~ msgid "Install with make:"
#~ msgstr ""
#~ msgid ""
#~ "The kernel modules and McKernel kernel"
#~ " image should be installed under the"
#~ " **ihk+mckernel** folder in your home "
#~ "directory."
#~ msgstr ""
#~ msgid "Install with rpm"
#~ msgstr ""
#~ msgid "Create the tarball and the spec file:"
#~ msgstr ""
#~ msgid "Create the rpm package:"
#~ msgstr ""
#~ msgid "Install the rpm package:"
#~ msgstr ""
#~ msgid ""
#~ "The kernel modules and McKernel kernel"
#~ " image are installed under the "
#~ "standard system directories."
#~ msgstr ""
#~ msgid "Prepare files and change settings for installing McKernel"
#~ msgstr ""
#~ msgid "Disable SELinux of the compute nodes:"
#~ msgstr ""
#~ msgid "Change the file to SELINUX=disabled. And then reboot the compute nodes:"
#~ msgstr ""
#~ msgid "Install the following packages to the compute nodes:"
#~ msgstr ""
#~ msgid ""
#~ "Ask the system administrator to install"
#~ " them. Note that ``libdwarf`` is in"
#~ " the CodeReady Linux Builder repository "
#~ "on RHEL 8 or in the PowerTools "
#~ "repository on CentOS 8."
#~ msgstr ""
#~ msgid "起動停止"
#~ msgstr "起動停止"
#~ msgid "関連ファイル"
#~ msgstr "関連ファイル"
#~ msgid "McKernelを用いたシステムを運用するシステム管理者を対象として、運用手順を説明する。"
#~ msgstr ""
#~ msgid ""
#~ "SMPプロセッサ向け、x86_64アーキ向けの関連ファイルの場所は以下の通り。 "
#~ "なお、IHK/McKernelのインストールディレクトリを<install>とする。"
#~ msgstr "運用向けコマンド・デーモンのファイルの場所は以下の通り。 なお、IHK/McKernelのインストールディレクトリを<install>とする。"
#~ msgid ""
#~ "SMPプロセッサ向け、x86_64アーキ向けの関連ファイルの場所は以下の通り。 "
#~ "なお、IHK/McKernelのインストールディレクトリを<install>とする。 The related "
#~ "files and their locations are as "
#~ "follows. Denote by ``<install>`` the "
#~ "install directory of IHK/McKernel."
#~ msgstr ""
#~ msgid ""
#~ "The related files and their locations"
#~ " are as follows. Denote by "
#~ "``<install>`` the install directory of "
#~ "IHK/McKernel."
#~ msgstr ""
#~ "SMPプロセッサ向け、x86_64アーキ向けの関連ファイルの場所は以下の通り。 "
#~ "なお、IHK/McKernelのインストールディレクトリを<install>とする。"
#~ msgid "運用向けコマンド・デーモンのファイルの場所は以下の通り。 なお、IHK/McKernelのインストールディレクトリを<install>とする。"
#~ msgstr "運用向けコマンド・デーモンのファイルの場所は以下の通り。 なお、IHK/McKernelのインストールディレクトリを<install>とする。"
#~ msgid "運用向けコマンド・デーモンのファイルの場所は以下の通り。"
#~ msgstr ""
#~ "The commands and daemons for operation"
#~ " and their locations are as follows."
#~ msgid "カーネルイメージ"
#~ msgstr ""
#~ msgid "ダンプ解析ツール"
#~ msgstr ""
#~ msgid "ダンプ形式変換ツール"
#~ msgstr ""
#~ msgid "tool"
#~ msgstr "ツール"

View File

@ -0,0 +1,821 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2020, Masamichi Takagi, Balazs Gerofi, Yutaka Ishikawa
# This file is distributed under the same license as the IHK/McKernel
# package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: IHK/McKernel \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-08-06 10:10+0900\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.7.0\n"
#: ../../ops.rst:5
msgid "McKernelを用いたシステムを運用するシステム管理者を対象として、運用手順を説明する。"
msgstr ""
#: ../../ops.rst:8
msgid "Installation"
msgstr "インストール"
#: ../../ops.rst:10
msgid "See `Quick Guide -- Installation <quick.html#installation>`__."
msgstr ""
#: ../../uti.rst:2
msgid "Advanced: Enable Utility Thread offloading Interface (UTI)"
msgstr ""
#: ../../uti.rst:4
msgid ""
"UTI enables a runtime such as MPI runtime to spawn utility threads such "
"as MPI asynchronous progress threads to Linux cores."
msgstr ""
#: ../../uti.rst:8
msgid "Install capstone"
msgstr ""
#: ../../uti.rst:11 ../../uti.rst:22
msgid "When compute nodes don't have access to repositories"
msgstr ""
#: ../../uti.rst:13
msgid "Install EPEL capstone-devel:"
msgstr ""
#: ../../uti.rst:24
msgid ""
"Ask the system administrator to install ``capstone-devel``. Note that it "
"is in the EPEL repository."
msgstr ""
#: ../../uti.rst:28
msgid "Install syscall_intercept"
msgstr ""
#: ../../uti.rst:37
msgid "Install UTI for McKernel"
msgstr ""
#: ../../uti.rst:39
msgid "Install:"
msgstr ""
#: ../../uti.rst:49
msgid "Install McKernel"
msgstr ""
#: ../../uti.rst:51
msgid "Add ``-DENABLE_UTI=ON`` option to ``cmake``:"
msgstr ""
#: ../../uti.rst:58
msgid "Run programs"
msgstr ""
#: ../../uti.rst:60
msgid "Add ``--enable-uti`` option to ``mcexec``:"
msgstr ""
#: ../../uti.rst:67
msgid "Install UTI for Linux"
msgstr ""
#: ../../uti.rst:69
msgid ""
"You should skip this step if it's already installed as with, for example,"
" Fujitsu Technical Computing Suite."
msgstr ""
#: ../../uti.rst:72
msgid "Install by make"
msgstr ""
#: ../../uti.rst:82
msgid "Install by rpm"
msgstr ""
#: ../../ops.rst:15
msgid "起動停止"
msgstr ""
#: ../../ops.rst:18
msgid "関連ファイル"
msgstr ""
#: ../../ops.rst:20
msgid ""
"SMPプロセッサ向け、x86_64アーキ向けの関連ファイルの場所は以下の通り。 "
"なお、IHK/McKernelのインストールディレクトリを<install>とする。"
msgstr ""
#: ../../ops.rst:24
msgid "<install>/kmod/ihk.ko"
msgstr ""
#: ../../ops.rst:24
msgid "IHK-master core"
msgstr ""
#: ../../ops.rst:26
msgid "|ihk-smp|"
msgstr ""
#: ../../ops.rst:26
msgid "IHK-master driver"
msgstr ""
#: ../../ops.rst:29
msgid "|mcctrl|"
msgstr ""
#: ../../ops.rst:29
msgid "Delegator module"
msgstr ""
#: ../../ops.rst:32
msgid "|mckernel.img|"
msgstr ""
#: ../../ops.rst:32
msgid "カーネルイメージ"
msgstr ""
#: ../../ops.rst:40
msgid "運用向けコマンド・デーモンのファイルの場所は以下の通り。 なお、IHK/McKernelのインストールディレクトリを<install>とする。"
msgstr ""
#: ../../ops.rst:44
msgid "|mcreboot|"
msgstr ""
#: ../../ops.rst:44 ../../ops.rst:104
msgid "ブートスクリプト"
msgstr ""
#: ../../ops.rst:47
msgid "|mcstop|"
msgstr ""
#: ../../ops.rst:47 ../../ops.rst:204
msgid "シャットダウンスクリプト"
msgstr ""
#: ../../ops.rst:50
msgid "<install>/bin/mcexec"
msgstr ""
#: ../../ops.rst:50 ../../ops.rst:242
msgid "プロセス起動コマンド"
msgstr ""
#: ../../ops.rst:52
msgid "<install>/bin/eclair"
msgstr ""
#: ../../ops.rst:52
msgid "ダンプ解析ツール"
msgstr ""
#: ../../ops.rst:54
msgid "|vmcore2mckdump|"
msgstr ""
#: ../../ops.rst:54
msgid "ダンプ形式変換ツール"
msgstr ""
#: ../../ops.rst:62
msgid "以下、関連コマンドおよび関連関数のインターフェイスを説明する。"
msgstr ""
#: ../../ops.rst:65
msgid "インターフェイス"
msgstr ""
#: ../../ops.rst:68
msgid "カーネル引数"
msgstr ""
#: ../../ops.rst:70
msgid "McKernelのカーネル引数を表 :numref:`tab-kargs` に示す。"
msgstr ""
#: ../../ops.rst:74
msgid "McKernelのカーネル引数"
msgstr ""
#: ../../ops.rst:77
msgid "hidos"
msgstr ""
#: ../../ops.rst:77
msgid "IKCを有効にする。"
msgstr ""
#: ../../ops.rst:79
msgid "|dlv|"
msgstr ""
#: ../../ops.rst
msgid "Linuxのpanicハンドラ経由でダンプを行った場合の、ダ"
msgstr ""
#: ../../ops.rst
msgid "ンプ対象とするメモリ領域の種類を<level>に設定する。"
msgstr ""
#: ../../ops.rst
msgid "設定可能な値は以下の通り。"
msgstr ""
#: ../../ops.rst:85 ../../ops.rst:166 ../../ops.rst:198 ../../ops.rst:236
msgid "0"
msgstr ""
#: ../../ops.rst:86 ../../ops.rst:167
msgid "IHKがMcKernelに割り当てたメモリ領域を出力する"
msgstr ""
#: ../../ops.rst:87 ../../ops.rst:168
msgid "24"
msgstr ""
#: ../../ops.rst:88 ../../ops.rst:169
msgid "カーネルが使用しているメモリ領域を出力する"
msgstr ""
#: ../../ops.rst:90 ../../ops.rst:171
msgid "指定がなかった場合は24が用いられる。"
msgstr ""
#: ../../ops.rst:92
msgid "|allow|"
msgstr ""
#: ../../ops.rst
msgid "McKernelに割り当てられたCPU数より大きい数のスレッド"
msgstr ""
#: ../../ops.rst
msgid "またはプロセスの生成を許可する。この引数が指定され"
msgstr ""
#: ../../ops.rst
msgid "ない場合に、CPU数より大きい数のスレッドまたはプロセ"
msgstr ""
#: ../../ops.rst
msgid "スをclone(), fork(), vfork()などで生成しようとする"
msgstr ""
#: ../../ops.rst
msgid "と、当該システムコールがEINVALエラーを返す。"
msgstr ""
#: ../../ops.rst:107 ../../ops.rst:209
msgid "書式"
msgstr ""
#: ../../ops.rst:115 ../../ops.rst:219
msgid "オプション"
msgstr ""
#: ../../ops.rst:118
msgid "|opt-c|"
msgstr ""
#: ../../ops.rst
msgid "McKernelに割り当てるCPUのリストを指定する。フォー"
msgstr ""
#: ../../ops.rst
msgid "マットは以下の通り。"
msgstr ""
#: ../../ops.rst
msgid "<CPU logical id>,<CPU logical id>...または"
msgstr ""
#: ../../ops.rst
msgid "<CPU logical id>-<CPU logical id>,<CPU logical id>"
msgstr ""
#: ../../ops.rst
msgid "-<CPU logical id>...または両者の混合。"
msgstr ""
#: ../../ops.rst:124
msgid "|opt-r|"
msgstr ""
#: ../../ops.rst
msgid "McKernelのCPUがIKCメッセージを送るLinux"
msgstr ""
#: ../../ops.rst
msgid "CPUを指定する。フォーマットは以下の通り。"
msgstr ""
#: ../../ops.rst
msgid "<CPU list>:<CPU id>+<CPU list>:<CPU id>..."
msgstr ""
#: ../../ops.rst
msgid "<CPU list>のフォーマットは-cオプションにおけるもの"
msgstr ""
#: ../../ops.rst
msgid "と同じである。"
msgstr ""
#: ../../ops.rst
msgid "各<CPU list>:<CPU id>は<CPU list>で示されるMcKernel"
msgstr ""
#: ../../ops.rst
msgid "のCPUが<CPU logical id>で示されるLinuxのCPUにIKC"
msgstr ""
#: ../../ops.rst
msgid "メッセージを送信することを意味する。"
msgstr ""
#: ../../ops.rst:133
msgid "|opt-m|"
msgstr ""
#: ../../ops.rst
msgid "McKernelに割り当てるメモリ領域を指定する。フォーマッ"
msgstr ""
#: ../../ops.rst
msgid "トは以下の通り。"
msgstr ""
#: ../../ops.rst
msgid "<size>@<NUMA-id>, <size>@<NUMA-id>..."
msgstr ""
#: ../../ops.rst:137
msgid "|opt-f|"
msgstr ""
#: ../../ops.rst
msgid "ihkmondが使用するsyslogプロトコルのfacilityを指定す"
msgstr ""
#: ../../ops.rst
msgid "る。デフォルトはLOG_LOCAL6。"
msgstr ""
#: ../../ops.rst:140
msgid "|opt-o|"
msgstr ""
#: ../../ops.rst
msgid "IHKのデバイスファイル(/dev/mcd*, /dev/mcos*)のオー"
msgstr ""
#: ../../ops.rst
msgid "ナーとグループの値を<user>[:<group>]の形式で指定す"
msgstr ""
#: ../../ops.rst
msgid "る。デフォルトはmcreboot.shを実行したユーザ。"
msgstr ""
#: ../../ops.rst:144
msgid "|opt-i|"
msgstr ""
#: ../../ops.rst
msgid "ihkmondがハングアップ検知のためにOS状態を確認する時"
msgstr ""
#: ../../ops.rst
msgid "間間隔を秒単位で指定する。-1が指定された場合はハン"
msgstr ""
#: ../../ops.rst
msgid "グアップ検知を行わない。指定がない場合はハングアッ"
msgstr ""
#: ../../ops.rst
msgid "プ検知を行わない。"
msgstr ""
#: ../../ops.rst:149
msgid "|opt-k|"
msgstr ""
#: ../../ops.rst
msgid "カーネルメッセージの/dev/logへのリダイレクト有無を"
msgstr ""
#: ../../ops.rst
msgid "指定する。0が指定された場合はリダイレクトを行わず、"
msgstr ""
#: ../../ops.rst
msgid "0以外が指定された場合はリダイレクトを行う。指定がな"
msgstr ""
#: ../../ops.rst
msgid "い場合はリダイレクトを行わない。"
msgstr ""
#: ../../ops.rst:154
msgid "-q <irq>"
msgstr ""
#: ../../ops.rst
msgid "IHKが使用するIRQ番号を指定する。指定がない場合は"
msgstr ""
#: ../../ops.rst
msgid "64-255の範囲で空いているものを使用する。"
msgstr ""
#: ../../ops.rst:157
msgid "-t"
msgstr ""
#: ../../ops.rst
msgid "x86_64アーキテクチャのみTurbo"
msgstr ""
#: ../../ops.rst
msgid "Boostをオンにする。デフォルトはオフ。"
msgstr ""
#: ../../ops.rst:160
msgid "-d <level>"
msgstr ""
#: ../../ops.rst:173
msgid "-O"
msgstr ""
#: ../../ops.rst
msgid "またはプロセスの生成を許可する。指定がない場合は許可"
msgstr ""
#: ../../ops.rst
msgid "しない。すなわち、CPU数より大きい数のスレッドまたは"
msgstr ""
#: ../../ops.rst
msgid "プロセスを生成しようとするとエラーとなる。"
msgstr ""
#: ../../ops.rst:189 ../../ops.rst:226
msgid "説明"
msgstr ""
#: ../../ops.rst:191
msgid ""
"McKernel関連カーネルモジュールをinsmodし、<cpulist>で指定されたCPUと<memlist>で指定されたメモリ領域からなるパーティションを作成し、IKC"
" mapを<ikcmap>に設定し、前記パーティションにMcKernelをブートする。"
msgstr ""
#: ../../ops.rst:195 ../../ops.rst:233
msgid "戻り値"
msgstr ""
#: ../../ops.rst:198 ../../ops.rst:236
msgid "正常終了"
msgstr ""
#: ../../ops.rst:200 ../../ops.rst:238
msgid "0以外"
msgstr ""
#: ../../ops.rst:200 ../../ops.rst:238
msgid "エラー"
msgstr ""
#: ../../ops.rst:221
msgid "なし"
msgstr ""
#: ../../ops.rst:228
msgid "McKernelをシャットダウンし、McKernel用パーティションを削除し、関連カーネルモジュールをrmmodする。"
msgstr ""
#: ../../ops.rst:247
msgid "ダンプ解析コマンド"
msgstr ""
#: ../../ops.rst:252
msgid "ダンプ形式変換コマンド"
msgstr ""
#: ../../ops.rst:257
msgid "ブート手順"
msgstr ""
#: ../../ops.rst:259
msgid "mcreboot.shを用いてブート手順を説明する。"
msgstr ""
#: ../../ops.rst:261 ../../ops.rst:908
msgid "スクリプトは以下の通り。"
msgstr ""
#: ../../ops.rst:854 ../../ops.rst:1052
msgid "手順は以下の通り。"
msgstr ""
#: ../../ops.rst:856
msgid "ihkmondを起動する。ihkmondは任意のタイミングで起動してよい。これは、ihkmondはOSインスタンスの作成を検知して動作を開始するためである。83行目"
msgstr ""
#: ../../ops.rst:858
msgid "Linuxのカーネルバージョンが、mcoverlayfsが動作するものであるかを確認する。200216行目"
msgstr ""
#: ../../ops.rst:860
msgid "irqbalanceを停止する。251257行目"
msgstr ""
#: ../../ops.rst:862
msgid ""
"/proc/irq/[n]/affinityの設定を保存した上でMcKernel "
"CPUを担当から外す。担当CPUが無くなる場合は、全てのLinux CPUを指定する。269303行目"
msgstr ""
#: ../../ops.rst:866
msgid "ihk.koをinsmodする。307行目"
msgstr ""
#: ../../ops.rst:868
msgid "Linuxによるメモリフラグメンテーションを緩和するために以下を実施する。313320行目"
msgstr ""
#: ../../ops.rst:870
msgid "アクティブでないプロセスを積極的にスワップアウトするように設定する"
msgstr ""
#: ../../ops.rst:872
msgid "クリーンなページキャッシュを無効化し、またdentriesやinodeのslabオブジェクトのうち可能なものを破棄する"
msgstr ""
#: ../../ops.rst:874
msgid "連続する空き領域を結合してより大きな空き領域にまとめる"
msgstr ""
#: ../../ops.rst:876
msgid ""
"ihk-smp-x86.koをinsmodする。340行目ihk-smp-x86.koは関数をihk.koに登録する。このため、ihk-"
"smp-x86.koはihk.koをinsmodした後にinsmodする必要がある。"
msgstr ""
#: ../../ops.rst:878
msgid "メモリを予約する。370行目"
msgstr ""
#: ../../ops.rst:880
msgid "CPUを予約する。374行目"
msgstr ""
#: ../../ops.rst:882
msgid "McKernelのカーネルモジュールmcctrl.koをinsmodする。382行目mcctrl.koはMcKernelブート時に呼ばれる関数をihk.koに登録する。このため、mcctrl.koのinsmodはihk.koのinsmodの後に、またブートの前に行う必要がある。"
msgstr ""
#: ../../ops.rst:884
msgid "OSインスタンスを作成する。406行目"
msgstr ""
#: ../../ops.rst:886
msgid "OSインスタンスにCPUを割り当てる。412行目"
msgstr ""
#: ../../ops.rst:888
msgid "McKernel CPUのIKCメッセージ送信先のLinux CPUを設定する。419行目"
msgstr ""
#: ../../ops.rst:890
msgid "OSインスタンスにメモリを割り当てる。426行目"
msgstr ""
#: ../../ops.rst:892
msgid "カーネルイメージをロードする。432行目"
msgstr ""
#: ../../ops.rst:894
msgid "カーネル引数をカーネルに渡す。438行目"
msgstr ""
#: ../../ops.rst:896
msgid "カーネルをブートする。444行目"
msgstr ""
#: ../../ops.rst:898
msgid ""
"/proc, "
"/sysファイルの準備をする。また、その中でmcoverlayfs.koをinsmodする。mcoverlayfs.koは他モジュールとの依存関係を持たない。454行目から567行目なお、関数インターフェイスでの対応関数はihk_os_create_pseudofs()である。"
msgstr ""
#: ../../ops.rst:900
msgid "irqbalanceを、Linux CPUのみを対象とする設定で開始する。569587行目"
msgstr ""
#: ../../ops.rst:904
msgid "シャットダウン手順"
msgstr ""
#: ../../ops.rst:906
msgid "mcstop+release.shを用いてシャットダウン手順を説明する。"
msgstr ""
#: ../../ops.rst:1054
msgid "ブート時にLinux CPUのみを対象とする設定で開始されたirqbalanceを停止する。2433行目"
msgstr ""
#: ../../ops.rst:1057
msgid "全てのOSインスタンスを破壊する。OSインスタンスに割り当てられていた資源はIHKがLWKのために予約した状態に移行する。3550行目"
msgstr ""
#: ../../ops.rst:1059
msgid "IHKがLWKのために予約していた資源を開放する。5277行目"
msgstr ""
#: ../../ops.rst:1061
msgid "mcctrl.koをrmmodする。81行目"
msgstr ""
#: ../../ops.rst:1063
msgid ""
"/proc, "
"/sysファイルの準備をする。また、その中でmcoverlayfs.koをrmmodする。87100行目なお、関数インターフェイスでの対応関数はihk_os_destroy_pseudofs()である。"
msgstr ""
#: ../../ops.rst:1065
msgid "ihk-smp-x86.koをrmmodする。104行目"
msgstr ""
#: ../../ops.rst:1067
msgid "ihk.koをrmmodする。112行目"
msgstr ""
#: ../../ops.rst:1069
msgid "ihkmondを停止する。121行目"
msgstr ""
#: ../../ops.rst:1071
msgid "/proc/irq/[n]/affinityの設定をブート時に保存しておいたものに戻し、ブート前の設定でirqbalanceを開始する。124135行目"
msgstr ""
#: ../../ops.rst:1073
msgid "Linuxカーネルのスワップアウト積極度の設定をデフォルトの値に戻す。138行目"
msgstr ""
#~ msgid "The following OS distributions and platforms are recommended:"
#~ msgstr "推奨OSディストリビューションとプロセッサは以下の通り。"
#~ msgid "OS distribution"
#~ msgstr ""
#~ msgid "CentOS 7.3 or later"
#~ msgstr ""
#~ msgid "RHEL 7.3 or later"
#~ msgstr ""
#~ msgid "Platform"
#~ msgstr ""
#~ msgid "Intel Xeon"
#~ msgstr ""
#~ msgid "Intel Xeon Phi"
#~ msgstr ""
#~ msgid "Fujitsu A64FX"
#~ msgstr ""
#~ msgid "Prepare files for building McKernel"
#~ msgstr ""
#~ msgid ""
#~ "Grant read permission to the System.map"
#~ " file of your kernel version on "
#~ "the build machine:"
#~ msgstr ""
#~ msgid "Install the following packages to the build machine:"
#~ msgstr ""
#~ msgid "When having access to repositories"
#~ msgstr ""
#~ msgid "On RHEL 8, enable the CodeReady Linux Builder (CLB) repository:"
#~ msgstr ""
#~ msgid "On CentOS 8, enable the PowerTools repository:"
#~ msgstr ""
#~ msgid "Install with yum:"
#~ msgstr ""
#~ msgid "When not having access to repositories"
#~ msgstr ""
#~ msgid ""
#~ "Ask the system administrator to install"
#~ " them. Note that ``libdwarf-devel`` "
#~ "is in the CodeReady Linux Builder "
#~ "repository on RHEL 8 or in the "
#~ "PowerTools repository on CentOS 8."
#~ msgstr ""
#~ msgid "Clone, compile, install"
#~ msgstr ""
#~ msgid "Clone the source code:"
#~ msgstr ""
#~ msgid "(Optional) Checkout to the specific branch or version:"
#~ msgstr ""
#~ msgid ""
#~ "Foe example, if you want to try"
#~ " the development branch, use “development”"
#~ " as the pathspec. If you want "
#~ "to try the prerelease version 1.7.0-0.2,"
#~ " use “1.7.0-0.2”."
#~ msgstr ""
#~ msgid "Move to build directory:"
#~ msgstr ""
#~ msgid "Run cmake:"
#~ msgstr ""
#~ msgid "When not cross-compiling:"
#~ msgstr ""
#~ msgid "When cross-compiling:"
#~ msgstr ""
#~ msgid "Install with cmake"
#~ msgstr ""
#~ msgid "Install with make:"
#~ msgstr ""
#~ msgid ""
#~ "The kernel modules and McKernel kernel"
#~ " image should be installed under the"
#~ " **ihk+mckernel** folder in your home "
#~ "directory."
#~ msgstr ""
#~ msgid "Install with rpm"
#~ msgstr ""
#~ msgid "Create the tarball and the spec file:"
#~ msgstr ""
#~ msgid "Create the rpm package:"
#~ msgstr ""
#~ msgid "Install the rpm package:"
#~ msgstr ""
#~ msgid ""
#~ "The kernel modules and McKernel kernel"
#~ " image are installed under the "
#~ "standard system directories."
#~ msgstr ""
#~ msgid "Prepare files and change settings for installing McKernel"
#~ msgstr ""
#~ msgid "Disable SELinux of the compute nodes:"
#~ msgstr ""
#~ msgid "Change the file to SELINUX=disabled. And then reboot the compute nodes:"
#~ msgstr ""
#~ msgid "Install the following packages to the compute nodes:"
#~ msgstr ""
#~ msgid ""
#~ "Ask the system administrator to install"
#~ " them. Note that ``libdwarf`` is in"
#~ " the CodeReady Linux Builder repository "
#~ "on RHEL 8 or in the PowerTools "
#~ "repository on CentOS 8."
#~ msgstr ""

View File

@ -0,0 +1,458 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2020, Masamichi Takagi, Balazs Gerofi, Yutaka Ishikawa
# This file is distributed under the same license as the IHK/McKernel
# package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: IHK/McKernel \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-08-04 16:40+0900\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.7.0\n"
#: ../../quick.rst:6
msgid "Introduction"
msgstr ""
#: ../../summary.rst:1
msgid ""
"IHK/McKernel is a light-weight multi-kernel operating system designed for"
" high-end supercomputing. It runs Linux and McKernel, a light-weight "
"kernel (LWK), side-by-side inside compute nodes and aims at the "
"following:"
msgstr ""
#: ../../summary.rst:6
msgid ""
"Provide scalable and consistent execution of large-scale parallel "
"scientific applications, but at the same time maintain the ability to "
"rapidly adapt to new hardware features and emerging programming models"
msgstr ""
#: ../../summary.rst:10
msgid ""
"Provide efficient memory and device management so that resource "
"contention and data movement are minimized at the system level"
msgstr ""
#: ../../summary.rst:12
msgid ""
"Eliminate OS noise by isolating OS services in Linux and provide jitter "
"free execution on the LWK"
msgstr ""
#: ../../summary.rst:14
msgid ""
"Support the full POSIX/Linux APIs by selectively offloading (slow-path) "
"system calls to Linux"
msgstr ""
#: ../../background.rst:2
msgid "Background and Motivation"
msgstr ""
#: ../../background.rst:4
msgid ""
"With the growing complexity of high-end supercomputers, the current "
"system software stack faces significant challenges as we move forward to "
"exascale and beyond. The necessity to deal with extreme degree of "
"parallelism, heterogeneous architectures, multiple levels of memory "
"hierarchy, power constraints, etc., advocates operating systems that can "
"rapidly adapt to new hardware requirements, and that can support novel "
"programming paradigms and runtime systems. On the other hand, a new class"
" of more dynamic and complex applications are also on the horizon, with "
"an increasing demand for application constructs such as in-situ analysis,"
" workflows, elaborate monitoring and performance tools. This complexity "
"relies not only on the rich features of POSIX, but also on the Linux APIs"
" (such as the */proc*, */sys* filesystems, etc.) in particular."
msgstr ""
#: ../../background.rst:19
msgid "Two Traditional HPC OS Approaches"
msgstr ""
#: ../../background.rst:21
msgid ""
"Traditionally, light-weight operating systems specialized for HPC "
"followed two approaches to tackle scalable execution of large-scale "
"applications. In the full weight kernel (FWK) approach, a full Linux "
"environment is taken as the basis, and features that inhibit attaining "
"HPC scalability are removed, i.e., making it light-weight. The pure "
"light-weight kernel (LWK) approach, on the other hand, starts from "
"scratch and effort is undertaken to add sufficient functionality so that "
"it provides a familiar API, typically something close to that of a "
"general purpose OS, while at the same time it retains the desired "
"scalability and reliability attributes. Neither of these approaches "
"yields a fully Linux compatible environment."
msgstr ""
#: ../../background.rst:34
msgid "The Multi-kernel Approach"
msgstr ""
#: ../../background.rst:36
msgid ""
"A hybrid approach recognized recently by the system software community is"
" to run Linux simultaneously with a lightweight kernel on compute nodes "
"and multiple research projects are now pursuing this direction. The basic"
" idea is that simulations run on an HPC tailored lightweight kernel, "
"ensuring the necessary isolation for noiseless execution of parallel "
"applications, but Linux is leveraged so that the full POSIX API is "
"supported. Additionally, the small code base of the LWK can also "
"facilitate rapid prototyping for new, exotic hardware features. "
"Nevertheless, the questions of how to share node resources between the "
"two types of kernels, where do device drivers execute, how exactly do the"
" two kernels interact with each other and to what extent are they "
"integrated, remain subjects of ongoing debate."
msgstr ""
#: ../../archtecture.rst:2
msgid "Architectural Overview"
msgstr ""
#: ../../archtecture.rst:4
msgid ""
"At the heart of the stack is a low-level software infrastructure called "
"Interface for Heterogeneous Kernels (IHK). IHK is a general framework "
"that provides capabilities for partitioning resources in a many-core "
"environment (e.g.,CPU cores and physical memory) and it enables "
"management of lightweight kernels. IHK can allocate and release host "
"resources dynamically and no reboot of the host machine is required when "
"altering configuration. IHK also provides a low-level inter-kernel "
"messaging infrastructure, called the Inter-Kernel Communication (IKC) "
"layer. An architectural overview of the main system components is shown "
"below."
msgstr ""
#: ../../archtecture.rst:18
msgid ""
"McKernel is a lightweight kernel written from scratch. It is designed for"
" HPC and is booted from IHK. McKernel retains a binary compatible ABI "
"with Linux, however, it implements only a small set of performance "
"sensitive system calls and the rest are offloaded to Linux. Specifically,"
" McKernel has its own memory management, it supports processes and multi-"
"threading with a simple round-robin cooperative (tick-less) scheduler, "
"and it implements signaling. It also allows inter-process memory mappings"
" and it provides interfaces to hardware performance counters."
msgstr ""
#: ../../archtecture.rst:29
msgid "Functionality"
msgstr ""
#: ../../archtecture.rst:31
msgid ""
"An overview of some of the principal functionalities of the IHK/McKernel "
"stack is provided below."
msgstr ""
#: ../../archtecture.rst:35
msgid "System Call Offloading"
msgstr ""
#: ../../archtecture.rst:37
msgid ""
"System call forwarding in McKernel is implemented as follows. When an "
"offloaded system call occurs, McKernel marshals the system call number "
"along with its arguments and sends a message to Linux via a dedicated IKC"
" channel. The corresponding proxy process running on Linux is by default "
"waiting for system call requests through an ioctl() call into IHKs "
"system call delegator kernel module. The delegator kernel modules IKC "
"interrupt handler wakes up the proxy process, which returns to userspace "
"and simply invokes the requested system call. Once it obtains the return "
"value, it instructs the delegator module to send the result back to "
"McKernel, which subsequently passes the value to user-space."
msgstr ""
#: ../../archtecture.rst:49
msgid "Unified Address Space"
msgstr ""
#: ../../archtecture.rst:51
msgid ""
"The unified address space model in IHK/McKernel ensures that offloaded "
"system calls can seamlessly resolve arguments even in case of pointers. "
"This mechanism is depicted below and is implemented as follows."
msgstr ""
#: ../../archtecture.rst:58
msgid ""
"First, the proxy process is compiled as a position independent binary, "
"which enables us to map the code and data segments specific to the proxy "
"process to an address range which is explicitly excluded from McKernels "
"user space. The grey box on the right side of the figure demonstrates the"
" excluded region. Second, the entire valid virtual address range of "
"McKernels application user-space is covered by a special mapping in the "
"proxy process for which we use a pseudo file mapping in Linux. This "
"mapping is indicated by the blue box on the left side of the figure."
msgstr ""
#: ../../install.rst:4
msgid "Installation"
msgstr "インストール"
#: ../../install.rst:6
msgid "The following OS distributions and platforms are recommended:"
msgstr "推奨OSディストリビューションとプロセッサは以下の通り。"
#: ../../install.rst:8
msgid "OS distribution"
msgstr ""
#: ../../install.rst:10
msgid "CentOS 7.3 or later"
msgstr ""
#: ../../install.rst:11
msgid "RHEL 7.3 or later"
msgstr ""
#: ../../install.rst:13
msgid "Platform"
msgstr ""
#: ../../install.rst:15
msgid "Intel Xeon"
msgstr ""
#: ../../install.rst:16
msgid "Intel Xeon Phi"
msgstr ""
#: ../../install.rst:17
msgid "Fujitsu A64FX"
msgstr ""
#: ../../install.rst:20
msgid "Prepare files for building McKernel"
msgstr ""
#: ../../install.rst:22
msgid ""
"Grant read permission to the System.map file of your kernel version on "
"the build machine:"
msgstr ""
#: ../../install.rst:28
msgid "Install the following packages to the build machine:"
msgstr ""
#: ../../install.rst:35 ../../install.rst:179
msgid "When having access to repositories"
msgstr ""
#: ../../install.rst:37 ../../install.rst:181
msgid "On RHEL 8, enable the CodeReady Linux Builder (CLB) repository:"
msgstr ""
#: ../../install.rst:43 ../../install.rst:187
msgid "On CentOS 8, enable the PowerTools repository:"
msgstr ""
#: ../../install.rst:49 ../../install.rst:193
msgid "Install with yum:"
msgstr ""
#: ../../install.rst:56 ../../install.rst:200
msgid "When not having access to repositories"
msgstr ""
#: ../../install.rst:58
msgid ""
"Ask the system administrator to install them. Note that ``libdwarf-"
"devel`` is in the CodeReady Linux Builder repository on RHEL 8 or in the "
"PowerTools repository on CentOS 8."
msgstr ""
#: ../../install.rst:61
msgid "Clone, compile, install"
msgstr ""
#: ../../install.rst:63
msgid "Clone the source code:"
msgstr ""
#: ../../install.rst:71
msgid "(Optional) Checkout to the specific branch or version:"
msgstr ""
#: ../../install.rst:79
msgid ""
"Foe example, if you want to try the development branch, use “development”"
" as the pathspec. If you want to try the prerelease version 1.7.0-0.2, "
"use “1.7.0-0.2”."
msgstr ""
#: ../../install.rst:83
msgid "Move to build directory:"
msgstr ""
#: ../../install.rst:89
msgid "Run cmake:"
msgstr ""
#: ../../install.rst:92 ../../install.rst:135
msgid "When not cross-compiling:"
msgstr ""
#: ../../install.rst:99 ../../install.rst:142
msgid "When cross-compiling:"
msgstr ""
#: ../../install.rst:111
msgid "Install with cmake"
msgstr ""
#: ../../install.rst:113
msgid "Install with make:"
msgstr ""
#: ../../install.rst:119
msgid ""
"The kernel modules and McKernel kernel image should be installed under "
"the **ihk+mckernel** folder in your home directory."
msgstr ""
#: ../../install.rst:123
msgid "Install with rpm"
msgstr ""
#: ../../install.rst:125
msgid "Create the tarball and the spec file:"
msgstr ""
#: ../../install.rst:132
msgid "Create the rpm package:"
msgstr ""
#: ../../install.rst:148
msgid "Install the rpm package:"
msgstr ""
#: ../../install.rst:154
msgid ""
"The kernel modules and McKernel kernel image are installed under the "
"standard system directories."
msgstr ""
#: ../../install.rst:158
msgid "Prepare files and change settings for installing McKernel"
msgstr ""
#: ../../install.rst:160
msgid "Disable SELinux of the compute nodes:"
msgstr ""
#: ../../install.rst:166
msgid "Change the file to SELINUX=disabled. And then reboot the compute nodes:"
msgstr ""
#: ../../install.rst:172
msgid "Install the following packages to the compute nodes:"
msgstr ""
#: ../../install.rst:202
msgid ""
"Ask the system administrator to install them. Note that ``libdwarf`` is "
"in the CodeReady Linux Builder repository on RHEL 8 or in the PowerTools "
"repository on CentOS 8."
msgstr ""
#: ../../boot_run_shutdown.rst:2
msgid "Boot McKernel"
msgstr ""
#: ../../boot_run_shutdown.rst:4
msgid ""
"A boot script called ``mcreboot.sh`` is provided under ``sbin`` in the "
"install folder. To boot on logical CPU 1 with 512MB of memory, use the "
"following invocation:"
msgstr ""
#: ../../boot_run_shutdown.rst:14
msgid ""
"You should see something similar like this if you display the McKernels "
"kernel message log:"
msgstr ""
#: ../../boot_run_shutdown.rst:42
msgid "Run a simple program on McKernel"
msgstr ""
#: ../../boot_run_shutdown.rst:44
msgid ""
"The mcexec command line tool (which is also the Linux proxy process) can "
"be used for executing applications on McKernel:"
msgstr ""
#: ../../boot_run_shutdown.rst:53
msgid "Shutdown McKernel"
msgstr ""
#: ../../boot_run_shutdown.rst:55
msgid ""
"Finally, to shutdown McKernel and release CPU/memory resources back to "
"Linux use the following command:"
msgstr ""
#: ../../team.rst:2
msgid "The Team"
msgstr ""
#: ../../team.rst:4
msgid ""
"The McKernel project was started at The University of Tokyo and currently"
" it is mainly developed at RIKEN. Some of our collaborators include:"
msgstr ""
#: ../../team.rst:8
msgid "Hitachi"
msgstr ""
#: ../../team.rst:9
msgid "Fujitsu"
msgstr ""
#: ../../team.rst:10
msgid "CEA (France)"
msgstr ""
#: ../../team.rst:11
msgid "NEC"
msgstr ""
#: ../../license.rst:2
msgid "License"
msgstr ""
#: ../../license.rst:4
msgid "McKernel is GPL licensed, as found in the LICENSE file."
msgstr ""
#: ../../contact.rst:2
msgid "Contact"
msgstr ""
#: ../../contact.rst:4
msgid ""
"Please give your feedback to us via one of the following mailing lists. "
"Subscription via `www.pccluster.org "
"<http://www.pccluster.org/mailman/listinfo/mckernel-users>`__ is needed."
msgstr ""
#: ../../contact.rst:9
msgid "English: mckernel-users@pccluster.org"
msgstr ""
#: ../../contact.rst:10
msgid "Japanese: mckernel-users-jp@pccluster.org"
msgstr ""

View File

@ -0,0 +1,28 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2020, Masamichi Takagi, Balazs Gerofi, Yutaka Ishikawa
# This file is distributed under the same license as the IHK/McKernel
# package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: IHK/McKernel \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-08-04 16:40+0900\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.7.0\n"
#: ../../spec-ihk.md:1
msgid "hi"
msgstr ""
#: ../../spec-ihk.md:3
msgid ":download:IHK Spec <ihk.pdf>"
msgstr ""

View File

@ -0,0 +1,24 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2020, Masamichi Takagi, Balazs Gerofi, Yutaka Ishikawa
# This file is distributed under the same license as the IHK/McKernel
# package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: IHK/McKernel \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-08-04 16:40+0900\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.7.0\n"
#: ../../spec-mckernel.md:1
msgid "Hello"
msgstr ""

View File

@ -0,0 +1,48 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2020, Masamichi Takagi, Balazs Gerofi, Yutaka Ishikawa
# This file is distributed under the same license as the IHK/McKernel
# package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: IHK/McKernel \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-08-07 10:00+0900\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.7.0\n"
#: ../../spec/ihk.rst:6
msgid "External Specs"
msgstr ""
#: ../../spec/ihk.rst:9
msgid "Overview"
msgstr ""
#: ../../spec/ihk.rst:12
msgid "Function Specs"
msgstr ""
#: ../../spec/ihk.rst:15
msgid "Command / Daemon Specs"
msgstr ""
#: ../../spec/ihk.rst:18
msgid "Booting LWK"
msgstr ""
#: ../../spec/mckernel.rst:6
msgid "Interfaces"
msgstr ""
#: ../../spec/mckernel.rst:9
msgid "Interface details"
msgstr ""

View File

@ -0,0 +1,53 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2020, Masamichi Takagi, Balazs Gerofi, Yutaka Ishikawa
# This file is distributed under the same license as the IHK/McKernel
# package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: IHK/McKernel \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-08-04 16:40+0900\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.7.0\n"
#: ../../summary.rst:1
msgid ""
"IHK/McKernel is a light-weight multi-kernel operating system designed for"
" high-end supercomputing. It runs Linux and McKernel, a light-weight "
"kernel (LWK), side-by-side inside compute nodes and aims at the "
"following:"
msgstr ""
#: ../../summary.rst:6
msgid ""
"Provide scalable and consistent execution of large-scale parallel "
"scientific applications, but at the same time maintain the ability to "
"rapidly adapt to new hardware features and emerging programming models"
msgstr ""
#: ../../summary.rst:10
msgid ""
"Provide efficient memory and device management so that resource "
"contention and data movement are minimized at the system level"
msgstr ""
#: ../../summary.rst:12
msgid ""
"Eliminate OS noise by isolating OS services in Linux and provide jitter "
"free execution on the LWK"
msgstr ""
#: ../../summary.rst:14
msgid ""
"Support the full POSIX/Linux APIs by selectively offloading (slow-path) "
"system calls to Linux"
msgstr ""

View File

@ -0,0 +1,46 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2020, Masamichi Takagi, Balazs Gerofi, Yutaka Ishikawa
# This file is distributed under the same license as the IHK/McKernel
# package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: IHK/McKernel \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-08-04 16:40+0900\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.7.0\n"
#: ../../team.rst:2
msgid "The Team"
msgstr ""
#: ../../team.rst:4
msgid ""
"The McKernel project was started at The University of Tokyo and currently"
" it is mainly developed at RIKEN. Some of our collaborators include:"
msgstr ""
#: ../../team.rst:8
msgid "Hitachi"
msgstr ""
#: ../../team.rst:9
msgid "Fujitsu"
msgstr ""
#: ../../team.rst:10
msgid "CEA (France)"
msgstr ""
#: ../../team.rst:11
msgid "NEC"
msgstr ""

View File

@ -0,0 +1,454 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2020, Masamichi Takagi, Balazs Gerofi, Yutaka Ishikawa
# This file is distributed under the same license as the IHK/McKernel
# package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: IHK/McKernel \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-08-07 10:00+0900\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.7.0\n"
#: ../../users.rst:6
msgid "Architectural Overview"
msgstr ""
#: ../../users.rst:8
msgid ""
"See `Quick Guide -- Architectural Overview <quick.html#architectural-"
"overview>`__."
msgstr ""
#: ../../users.rst:11
msgid "Running Programs"
msgstr ""
#: ../../users.rst:13
msgid ""
"You need to check if your application and pre-/post-processing programs "
"are suited to run with McKernel. Follow the guide below to choose to run "
"the whole on McKernel, or run the whole on Linux, or run pre-/post-"
"processing on Linux and the application on McKernel:"
msgstr ""
#: ../../users.rst:16
msgid "Application"
msgstr ""
#: ../../users.rst:18
msgid ""
"Run the whole on Linux if it issues system calls frequently and becoming "
"the bottleneck with McKernel. For example, it's better to run on Linux "
"those programs performing many file I/O operations."
msgstr ""
#: ../../users.rst:19
msgid "Otherwise, run it on McKernel."
msgstr ""
#: ../../users.rst:21
msgid "Pre-/Post-processing"
msgstr ""
#: ../../users.rst:23
msgid ""
"Run it on McKernel if it consumes a large amount of memory or the "
"execution time isn't prolonged prohivitively with McKernel. The reason "
"for the first condition is that the resource could be limited for Linux "
"CPUs in the nodes for McKernel."
msgstr ""
#: ../../users.rst:24
msgid "Otherwise, run it on Linux."
msgstr ""
#: ../../users.rst:28
msgid "Modify job script"
msgstr ""
#: ../../users.rst:30
msgid ""
"When using job submission system, you need to modify the job scripts so "
"that the job script itself is going to run on Linux. For example, with "
"Fujitsu Technical Computing Suite (TCS), you need to specify "
"``jobenv=linux`` by inserting the following line into the job script:"
msgstr ""
#: ../../users.rst:38
msgid "Insert ``mcexec`` into the command line"
msgstr ""
#: ../../users.rst:40
msgid ""
"You need to insert ``mcexec`` into the command lines invoking the "
"programs that you chose to run on McKernel:"
msgstr ""
#: ../../users.rst:43
msgid "Non-MPI programs"
msgstr ""
#: ../../users.rst:45
msgid "Insert ``mcexec`` before an executable:"
msgstr ""
#: ../../users.rst:52
msgid "MPI programs"
msgstr ""
#: ../../users.rst:54
msgid ""
"Insert ``mcexec -n <processes-per-node>`` **after mpirun** and before an "
"executable:"
msgstr ""
#: ../../users.rst:61
msgid ""
"``<processes-per-node>`` is the number of the processes per node and "
"calculated by (number of MPI processes) / (number of nodes)."
msgstr ""
#: ../../users.rst:64
msgid ""
"For example, ``<processes-per-node>`` equals to 4 (=32/8) when specifying"
" the number of processes and nodes as follows with Fujitsu Technical "
"Computing Suite."
msgstr ""
#: ../../users.rst:74
msgid "Limitations"
msgstr ""
#: ../../users.rst:76
msgid ""
"Pseudo devices such as /dev/mem and /dev/zero are not mmap()ed correctly "
"even if the mmap() returns a success. An access of their mapping receives"
" the SIGSEGV signal."
msgstr ""
#: ../../users.rst:80
msgid ""
"clone() supports only the following flags. All the other flags cause "
"clone() to return error or are simply ignored."
msgstr ""
#: ../../users.rst:83
msgid "CLONE_CHILD_CLEARTID"
msgstr ""
#: ../../users.rst:84
msgid "CLONE_CHILD_SETTID"
msgstr ""
#: ../../users.rst:85
msgid "CLONE_PARENT_SETTID"
msgstr ""
#: ../../users.rst:86
msgid "CLONE_SETTLS"
msgstr ""
#: ../../users.rst:87
msgid "CLONE_SIGHAND"
msgstr ""
#: ../../users.rst:88
msgid "CLONE_VM"
msgstr ""
#: ../../users.rst:90
msgid "PAPI has the following restriction."
msgstr ""
#: ../../users.rst:92
msgid ""
"Number of counters a user can use at the same time is up to the number of"
" the physical counters in the processor."
msgstr ""
#: ../../users.rst:95
msgid "msync writes back only the modified pages mapped by the calling process."
msgstr ""
#: ../../users.rst:98
msgid "The following syscalls always return the ENOSYS error."
msgstr ""
#: ../../users.rst:100
msgid "migrate_pages()"
msgstr ""
#: ../../users.rst:101
msgid "move_pages()"
msgstr ""
#: ../../users.rst:102
msgid "set_robust_list()"
msgstr ""
#: ../../users.rst:104
msgid "The following syscalls always return the EOPNOTSUPP error."
msgstr ""
#: ../../users.rst:106
msgid "arch_prctl(ARCH_SET_GS)"
msgstr ""
#: ../../users.rst:107
msgid "signalfd()"
msgstr ""
#: ../../users.rst:109
msgid "signalfd4() returns a fd, but signal is not notified through the fd."
msgstr ""
#: ../../users.rst:111
msgid "set_rlimit sets the limit values but they are not enforced."
msgstr ""
#: ../../users.rst:113
msgid "Address randomization is not supported."
msgstr ""
#: ../../users.rst:115
msgid ""
"brk() extends the heap more than requestd when -h (extend-heap-by=) "
"option of mcexec is used with the value larger than 4 KiB. "
"syscall_pwrite02 of LTP would fail for this reason. This is because the "
"test expects that the end of the heap is set to the same address as the "
"argument of sbrk() and expects a segmentation violation occurs when it "
"tries to access the memory area right next to the boundary. However, the "
"optimization sets the end to a value larger than the requested. "
"Therefore, the expected segmentation violation doesnt occur."
msgstr ""
#: ../../users.rst:125
msgid ""
"setpriority()/getpriority() wont work. They might set/get the priority "
"of a random mcexec thread. This is because theres no fixed "
"correspondence between a McKernel thread which issues the system call and"
" a mcexec thread which handles the offload request."
msgstr ""
#: ../../users.rst:130
msgid ""
"mbind() can set the policy but it is not used when allocating physical "
"pages."
msgstr ""
#: ../../users.rst:133
msgid ""
"MPOL_F_RELATIVE_NODES and MPOL_INTERLEAVE flags for "
"set_mempolicy()/mbind() are not supported."
msgstr ""
#: ../../users.rst:136
msgid ""
"The MPOL_BIND policy for set_mempolicy()/mbind() works as the same as the"
" MPOL_PREFERRED policy. That is, the physical page allocator doesnt give"
" up the allocation when the specified nodes are running out of pages but "
"continues to search pages in the other nodes."
msgstr ""
#: ../../users.rst:141
msgid ""
"Kernel dump on Linux panic requires Linux kernel CentOS-7.4 and later. In"
" addition, crash_kexec_post_notifiers kernel argument must be given to "
"Linux kernel."
msgstr ""
#: ../../users.rst:145
msgid ""
"setfsuid()/setfsgid() cannot change the id of the calling thread. "
"Instead, it changes that of the mcexec worker thread which takes the "
"system-call offload request."
msgstr ""
#: ../../users.rst:149
msgid ""
"mmap (hugeTLBfs): The physical pages corresponding to a map are released "
"when no McKernel process exist. The next map gets fresh physical pages."
msgstr ""
#: ../../users.rst:153
msgid "Sticky bit on executable file has no effect."
msgstr ""
#: ../../users.rst:155
msgid ""
"Linux (RHEL-7 for x86_64) could hang when offlining CPUs in the process "
"of booting McKernel due to the Linux bug, found in Linux-3.10 and fixed "
"in the later version. One way to circumvent this is to always assign the "
"same CPU set to McKernel."
msgstr ""
#: ../../users.rst:160
msgid "madvise:"
msgstr ""
#: ../../users.rst:162
msgid "MADV_HWPOISON and MADV_SOFT_OFFLINE always returns -EPERM."
msgstr ""
#: ../../users.rst:163
msgid "MADV_MERGEABLE and MADV_UNMERGEABLE always returns -EINVAL."
msgstr ""
#: ../../users.rst:164
msgid ""
"MADV_HUGEPAGE and MADV_NOHUGEPAGE on file map returns -EINVAL except on "
"RHEL-8 for aarch64."
msgstr ""
#: ../../users.rst:167
msgid ""
"brk() and mmap() doesnt report out-of-memory through its return value. "
"Instead, page-fault reports the error."
msgstr ""
#: ../../users.rst:170
msgid ""
"Anonymous mmap pre-maps requested number of pages when contiguous pages "
"are available. Demand paging is used when not available."
msgstr ""
#: ../../users.rst:173
msgid ""
"Mixing page sizes in anonymous shared mapping is not allowed. mmap "
"creates vm_range with one page size. And munmap or mremap that needs the "
"reduced page size changes the sizes of all the pages of the vm_range."
msgstr ""
#: ../../users.rst:178
msgid ""
"ihk_os_getperfevent() could time-out when invoked from Fujitsu TCS (job-"
"scheduler)."
msgstr ""
#: ../../users.rst:181
msgid ""
"The behaviors of madvise and mbind are changed to do nothing and report "
"success as a workaround for Fugaku."
msgstr ""
#: ../../users.rst:184
msgid ""
"mmap() allows unlimited overcommit. Note that it corresponds to setting "
"sysctl ``vm.overcommit_memory`` to 1."
msgstr ""
#~ msgid ""
#~ "At the heart of the stack is "
#~ "a low-level software infrastructure "
#~ "called Interface for Heterogeneous Kernels "
#~ "(IHK). IHK is a general framework "
#~ "that provides capabilities for partitioning"
#~ " resources in a many-core environment"
#~ " (e.g.,CPU cores and physical memory) "
#~ "and it enables management of lightweight"
#~ " kernels. IHK can allocate and "
#~ "release host resources dynamically and "
#~ "no reboot of the host machine is"
#~ " required when altering configuration. IHK"
#~ " also provides a low-level inter-"
#~ "kernel messaging infrastructure, called the"
#~ " Inter-Kernel Communication (IKC) layer."
#~ " An architectural overview of the "
#~ "main system components is shown below."
#~ msgstr ""
#~ msgid ""
#~ "McKernel is a lightweight kernel written"
#~ " from scratch. It is designed for "
#~ "HPC and is booted from IHK. "
#~ "McKernel retains a binary compatible ABI"
#~ " with Linux, however, it implements "
#~ "only a small set of performance "
#~ "sensitive system calls and the rest "
#~ "are offloaded to Linux. Specifically, "
#~ "McKernel has its own memory management,"
#~ " it supports processes and multi-"
#~ "threading with a simple round-robin "
#~ "cooperative (tick-less) scheduler, and "
#~ "it implements signaling. It also allows"
#~ " inter-process memory mappings and it"
#~ " provides interfaces to hardware "
#~ "performance counters."
#~ msgstr ""
#~ msgid "Functionality"
#~ msgstr ""
#~ msgid ""
#~ "An overview of some of the "
#~ "principal functionalities of the IHK/McKernel"
#~ " stack is provided below."
#~ msgstr ""
#~ msgid "System Call Offloading"
#~ msgstr ""
#~ msgid ""
#~ "System call forwarding in McKernel is"
#~ " implemented as follows. When an "
#~ "offloaded system call occurs, McKernel "
#~ "marshals the system call number along"
#~ " with its arguments and sends a "
#~ "message to Linux via a dedicated "
#~ "IKC channel. The corresponding proxy "
#~ "process running on Linux is by "
#~ "default waiting for system call requests"
#~ " through an ioctl() call into IHKs"
#~ " system call delegator kernel module. "
#~ "The delegator kernel modules IKC "
#~ "interrupt handler wakes up the proxy "
#~ "process, which returns to userspace and"
#~ " simply invokes the requested system "
#~ "call. Once it obtains the return "
#~ "value, it instructs the delegator module"
#~ " to send the result back to "
#~ "McKernel, which subsequently passes the "
#~ "value to user-space."
#~ msgstr ""
#~ msgid "Unified Address Space"
#~ msgstr ""
#~ msgid ""
#~ "The unified address space model in "
#~ "IHK/McKernel ensures that offloaded system "
#~ "calls can seamlessly resolve arguments "
#~ "even in case of pointers. This "
#~ "mechanism is depicted below and is "
#~ "implemented as follows."
#~ msgstr ""
#~ msgid ""
#~ "First, the proxy process is compiled "
#~ "as a position independent binary, which"
#~ " enables us to map the code and"
#~ " data segments specific to the proxy"
#~ " process to an address range which"
#~ " is explicitly excluded from McKernels "
#~ "user space. The grey box on the"
#~ " right side of the figure "
#~ "demonstrates the excluded region. Second, "
#~ "the entire valid virtual address range"
#~ " of McKernels application user-space "
#~ "is covered by a special mapping in"
#~ " the proxy process for which we "
#~ "use a pseudo file mapping in "
#~ "Linux. This mapping is indicated by "
#~ "the blue box on the left side "
#~ "of the figure."
#~ msgstr ""

View File

@ -0,0 +1,94 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2020, Masamichi Takagi, Balazs Gerofi, Yutaka Ishikawa
# This file is distributed under the same license as the IHK/McKernel
# package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: IHK/McKernel \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-08-04 16:40+0900\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.7.0\n"
#: ../../uti.rst:2
msgid "Advanced: Enable Utility Thread offloading Interface (UTI)"
msgstr ""
#: ../../uti.rst:4
msgid ""
"UTI enables a runtime such as MPI runtime to spawn utility threads such "
"as MPI asynchronous progress threads to Linux cores."
msgstr ""
#: ../../uti.rst:8
msgid "Install capstone"
msgstr ""
#: ../../uti.rst:11 ../../uti.rst:22
msgid "When compute nodes don't have access to repositories"
msgstr ""
#: ../../uti.rst:13
msgid "Install EPEL capstone-devel:"
msgstr ""
#: ../../uti.rst:24
msgid ""
"Ask the system administrator to install ``capstone-devel``. Note that it "
"is in the EPEL repository."
msgstr ""
#: ../../uti.rst:28
msgid "Install syscall_intercept"
msgstr ""
#: ../../uti.rst:37
msgid "Install UTI for McKernel"
msgstr ""
#: ../../uti.rst:39
msgid "Install:"
msgstr ""
#: ../../uti.rst:49
msgid "Install McKernel"
msgstr ""
#: ../../uti.rst:51
msgid "Add ``-DENABLE_UTI=ON`` option to ``cmake``:"
msgstr ""
#: ../../uti.rst:58
msgid "Run programs"
msgstr ""
#: ../../uti.rst:60
msgid "Add ``--enable-uti`` option to ``mcexec``:"
msgstr ""
#: ../../uti.rst:67
msgid "Install UTI for Linux"
msgstr ""
#: ../../uti.rst:69
msgid ""
"You should skip this step if it's already installed as with, for example,"
" Fujitsu Technical Computing Suite."
msgstr ""
#: ../../uti.rst:72
msgid "Install by make"
msgstr ""
#: ../../uti.rst:82
msgid "Install by rpm"
msgstr ""

1
docs/logo.rst Normal file
View File

@ -0,0 +1 @@
.. figure:: mckernel-logo.png

BIN
docs/mckernel-logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

BIN
docs/mckernel.pdf Normal file

Binary file not shown.

BIN
docs/mckernel.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

View File

@ -0,0 +1,9 @@
.. sectnum::
:suffix: .
:depth: 3
Interfaces
==========
Interface details
=================

1071
docs/operators.rst Normal file

File diff suppressed because it is too large Load Diff

22
docs/quick.rst Normal file
View File

@ -0,0 +1,22 @@
.. sectnum::
:suffix: .
:depth: 3
Introduction
============
.. include:: summary.rst
.. include:: background.rst
.. include:: archtecture.rst
.. include:: install.rst
.. include:: boot_run_shutdown.rst
.. include:: team.rst
.. include:: license.rst
.. include:: contact.rst

30
docs/requirements.txt Normal file
View File

@ -0,0 +1,30 @@
alabaster==0.7.12
attrs==19.3.0
Babel==2.7.0
certifi==2019.11.28
chardet==3.0.4
commonmark==0.9.1
docutils==0.15
idna==2.8
imagesize==1.1.0
Jinja2==2.10.3
MarkupSafe==1.1.1
mistune==0.8.4
packaging==19.2
Pygments==2.5.2
pyparsing==2.4.5
pytz==2019.3
recommonmark==0.6.0
requests==2.22.0
roman==3.2
six==1.13.0
snowballstemmer==2.0.0
Sphinx==2.2.2
sphinx-rtd-theme==0.5.0
sphinxcontrib-applehelp==1.0.1
sphinxcontrib-devhelp==1.0.1
sphinxcontrib-htmlhelp==1.0.2
sphinxcontrib-jsmath==1.0.1
sphinxcontrib-qthelp==1.0.2
sphinxcontrib-serializinghtml==1.1.3
urllib3==1.25.7

3
docs/spec-ihk.md Normal file
View File

@ -0,0 +1,3 @@
## hi
:download:`IHK Spec <ihk.pdf>`

1
docs/spec-mckernel.md Normal file
View File

@ -0,0 +1 @@
## Hello

18
docs/spec/ihk.rst Normal file
View File

@ -0,0 +1,18 @@
.. sectnum::
:suffix: .
:depth: 3
External Specs
==============
Overview
--------
Function Specs
--------------
Command / Daemon Specs
----------------------
Booting LWK
===========

9
docs/spec/mckernel.rst Normal file
View File

@ -0,0 +1,9 @@
.. sectnum::
:suffix: .
:depth: 3
Interfaces
==========
Interface details
=================

15
docs/summary.rst Normal file
View File

@ -0,0 +1,15 @@
IHK/McKernel is a light-weight multi-kernel operating system designed
for high-end supercomputing. It runs Linux and McKernel, a light-weight
kernel (LWK), side-by-side inside compute nodes and aims at the
following:
- Provide scalable and consistent execution of large-scale parallel
scientific applications, but at the same time maintain the ability to
rapidly adapt to new hardware features and emerging programming
models
- Provide efficient memory and device management so that resource
contention and data movement are minimized at the system level
- Eliminate OS noise by isolating OS services in Linux and provide
jitter free execution on the LWK
- Support the full POSIX/Linux APIs by selectively offloading
(slow-path) system calls to Linux

12
docs/team.rst Normal file
View File

@ -0,0 +1,12 @@
The Team
========
The McKernel project was started at The University of Tokyo and
currently it is mainly developed at RIKEN. Some of our collaborators
include:
- Hitachi
- Fujitsu
- CEA (France)
- NEC

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

185
docs/users.rst Normal file
View File

@ -0,0 +1,185 @@
.. sectnum::
:suffix: .
:depth: 3
Architectural Overview
======================
See `Quick Guide -- Architectural Overview <quick.html#architectural-overview>`__.
Running Programs
================
You need to check if your application and pre-/post-processing programs are suited to run with McKernel.
Follow the guide below to choose to run the whole on McKernel, or run the whole on Linux, or run pre-/post-processing on Linux and the application on McKernel:
* Application
- Run the whole on Linux if it issues system calls frequently and becoming the bottleneck with McKernel, e.g., those performing many file I/O operations.
- Otherwise, run it on McKernel.
* Pre-/Post-processing
- Run it on McKernel if it consumes a large amount of memory or the execution time isn't prolonged prohivitively with McKernel. The reason for the first condition is that the resource could be limited for Linux CPUs in the nodes for McKernel.
- Otherwise, run it on Linux.
Modify job script
-----------------
When using job submission system, you need to modify the job scripts so that the job script itself is going to run on Linux.
For example, with Fujitsu Technical Computing Suite (TCS), you need to specify ``jobenv=mck1`` by inserting the following line into the job script:
.. code-block:: none
#PJM -L jobenv=mck1
Insert ``mcexec`` into the command line
---------------------------------------
You need to insert ``mcexec`` into the command lines invoking the programs that you chose to run on McKernel:
Non-MPI programs
~~~~~~~~~~~~~~~~
Insert ``mcexec`` before an executable:
::
mcexec ./a.out
MPI programs
~~~~~~~~~~~~
Insert ``mcexec -n <processes-per-node>`` **after mpirun** and before an
executable:
::
mpirun -n <number-of-MPI-processes> mcexec -n <processes-per-node> ./a.out
``<processes-per-node>`` is the number of the processes per node and
calculated by (number of MPI processes) / (number of nodes).
For example, ``<processes-per-node>`` equals to 4 (=32/8) when
specifying the number of processes and nodes as follows with
Fujitsu Technical Computing Suite.
.. code-block:: none
#PJM --mpi "proc=32"
#PJM -L "node=8"
Limitations
===========
1. Pseudo devices such as /dev/mem and /dev/zero are not mmap()ed
correctly even if the mmap() returns a success. An access of their
mapping receives the SIGSEGV signal.
2. clone() supports only the following flags. All the other flags cause
clone() to return error or are simply ignored.
- CLONE_CHILD_CLEARTID
- CLONE_CHILD_SETTID
- CLONE_PARENT_SETTID
- CLONE_SETTLS
- CLONE_SIGHAND
- CLONE_VM
3. PAPI has the following restriction.
- Number of counters a user can use at the same time is up to the
number of the physical counters in the processor.
4. msync writes back only the modified pages mapped by the calling
process.
5. The following syscalls always return the ENOSYS error.
- migrate_pages()
- move_pages()
- set_robust_list()
6. The following syscalls always return the EOPNOTSUPP error.
- arch_prctl(ARCH_SET_GS)
- signalfd()
7. signalfd4() returns a fd, but signal is not notified through the fd.
8. set_rlimit sets the limit values but they are not enforced.
9. Address randomization is not supported.
10. brk() extends the heap more than requestd when -h (extend-heap-by=)
option of mcexec is used with the value larger than 4 KiB.
syscall_pwrite02 of LTP would fail for this reason. This is because
the test expects that the end of the heap is set to the same address
as the argument of sbrk() and expects a segmentation violation
occurs when it tries to access the memory area right next to the
boundary. However, the optimization sets the end to a value larger
than the requested. Therefore, the expected segmentation violation
doesnt occur.
11. setpriority()/getpriority() wont work. They might set/get the
priority of a random mcexec thread. This is because theres no fixed
correspondence between a McKernel thread which issues the system
call and a mcexec thread which handles the offload request.
12. mbind() can set the policy but it is not used when allocating
physical pages.
13. MPOL_F_RELATIVE_NODES and MPOL_INTERLEAVE flags for
set_mempolicy()/mbind() are not supported.
14. The MPOL_BIND policy for set_mempolicy()/mbind() works as the same
as the MPOL_PREFERRED policy. That is, the physical page allocator
doesnt give up the allocation when the specified nodes are running
out of pages but continues to search pages in the other nodes.
15. Kernel dump on Linux panic requires Linux kernel CentOS-7.4 and
later. In addition, crash_kexec_post_notifiers kernel argument must
be given to Linux kernel.
16. setfsuid()/setfsgid() cannot change the id of the calling thread.
Instead, it changes that of the mcexec worker thread which takes the
system-call offload request.
17. mmap (hugeTLBfs): The physical pages corresponding to a map are
released when no McKernel process exist. The next map gets fresh
physical pages.
18. Sticky bit on executable file has no effect.
19. Linux (RHEL-7 for x86_64) could hang when offlining CPUs in the
process of booting McKernel due to the Linux bug, found in
Linux-3.10 and fixed in the later version. One way to circumvent
this is to always assign the same CPU set to McKernel.
20. madvise:
- MADV_HWPOISON and MADV_SOFT_OFFLINE always returns -EPERM.
- MADV_MERGEABLE and MADV_UNMERGEABLE always returns -EINVAL.
- MADV_HUGEPAGE and MADV_NOHUGEPAGE on file map returns -EINVAL
except on RHEL-8 for aarch64.
21. brk() and mmap() doesnt report out-of-memory through its return
value. Instead, page-fault reports the error.
22. Anonymous mmap pre-maps requested number of pages when contiguous
pages are available. Demand paging is used when not available.
23. Mixing page sizes in anonymous shared mapping is not allowed. mmap
creates vm_range with one page size. And munmap or mremap that needs
the reduced page size changes the sizes of all the pages of the
vm_range.
24. ihk_os_getperfevent() could time-out when invoked from Fujitsu TCS
(job-scheduler).
25. The behaviors of madvise and mbind are changed to do nothing and
report success as a workaround for Fugaku.
26. mmap() allows unlimited overcommit. Note that it corresponds to
setting sysctl ``vm.overcommit_memory`` to 1.

91
docs/uti.rst Normal file
View File

@ -0,0 +1,91 @@
Advanced: Enable Utility Thread offloading Interface (UTI)
-------------------------------------------------------------
UTI enables a runtime such as MPI runtime to spawn utility threads such
as MPI asynchronous progress threads to Linux cores.
Install capstone
~~~~~~~~~~~~~~~~~~~~
When compute nodes don't have access to repositories
""""""""""""""""""""""""""""""""""""""""""""""""""""
Install EPEL capstone-devel:
::
sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
sudo yum install capstone-devel
When compute nodes don't have access to repositories
""""""""""""""""""""""""""""""""""""""""""""""""""""
Ask the system administrator to install ``capstone-devel``. Note that it is in the EPEL repository.
Install syscall_intercept
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
::
git clone https://github.com/RIKEN-SysSoft/syscall_intercept.git
mkdir build && cd build
cmake <syscall_intercept>/arch/aarch64 -DCMAKE_INSTALL_PREFIX=<syscall-intercept-install> -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=gcc -DTREAT_WARNINGS_AS_ERRORS=OFF
Install UTI for McKernel
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Install:
.. code-block:: none
git clone https://github.com/RIKEN-SysSoft/uti.git
mkdir build && cd build
../uti/configure --prefix=<mckernel-install> --with-rm=mckernel
make && make install
Install McKernel
~~~~~~~~~~~~~~~~~~~~
Add ``-DENABLE_UTI=ON`` option to ``cmake``:
::
CMAKE_PREFIX_PATH=<syscall-intercept-install> cmake -DCMAKE_INSTALL_PREFIX=${HOME}/ihk+mckernel -DENABLE_UTI=ON $HOME/src/ihk+mckernel/mckernel
Run programs
~~~~~~~~~~~~~~~~
Add ``--enable-uti`` option to ``mcexec``:
::
mcexec --enable-uti <command>
Install UTI for Linux
~~~~~~~~~~~~~~~~~~~~~~~~~
You should skip this step if it's already installed as with, for example, Fujitsu Technical Computing Suite.
Install by make
"""""""""""""""
.. code-block:: none
git clone https://github.com/RIKEN-SysSoft/uti.git
mkdir build && cd build
../uti/configure --prefix=<uti-install> --with-rm=linux
make && make install
Install by rpm
""""""""""""""
.. code-block:: none
git clone https://github.com/RIKEN-SysSoft/uti.git
mkdir build && cd build
../uti/configure --prefix=<uti-install> --with-rm=linux
rm -f ~/rpmbuild/SOURCES/<version>.tar.gz
rpmbuild -ba ./scripts/uti.spec
rpm -Uvh uti-<version>-<release>-<arch>.rpm

2
ihk

Submodule ihk updated: df12c9102c...66ef07bfb2