Performance Co-Pilot (PCP) is a system performance and analysis framework. It has an agent-based architecture, which has many kinds of agents called PMDAs, Performance Metric Domain Agents are responsible for collecting performance metrics. Each agent reports the collected metrics to a daemon, called the PMCD, Performance Metric Collection Daemon. We can see the collect values with PCP's set of client tools, pmval, pminfo, pmrep, etc.
Device-Mapper is the Linux kernel framework for mapping physical block devices onto higher-level virtual block devices.
It realizes software RAIDS, IO multipath, cache volumes, thin provisioning and snapshots.
To investigate Device-Mapper devices behavior, we sometimes need more flexible statistics data than traditional iostat data.
To make life easier for users who would like to use the PCP tools for their performance measurements and monitoring, We will create a new PCP PMDA that pr
#!/bin/bash | |
# Variable settings | |
Digit_2=0.005 | |
Digit_1=0.05 | |
atexit() { | |
[[ -n ${tmpfile-} ]] && rm -f "${tmpfile}" | |
} |
#include <stdio.h> | |
#include <errno.h> | |
#include <fcntl.h> | |
#include <unistd.h> | |
#include <sys/ioctl.h> | |
#include <linux/fs.h> | |
enum test_type { | |
IOC_VERSION = 1, | |
IOC_FLAGS, |
#define _GNU_SOURCE 1 | |
#include <stdio.h> | |
#include <errno.h> | |
#include <sys/stat.h> | |
#include <sys/types.h> | |
#include <unistd.h> | |
#include <fcntl.h> | |
#include <string.h> |
-
PMEM as RAMがマージされた.not entirely happy らしいが,将来的な開発も含めてのことのよう.
-
PMEMがrepeat instructionsでエラーを起こしやすいのはブート時にRAMのようにscrubbedの必要がないから(scrubすれば良いような気もするが,memory modeだと多分されるような気がする,予想)
-
どうやらmcsafeを常に使ってpmemを読むらしい.ということは,System RAMだとしてもpmemがSystem ramとして登録されているということをカーネルは認識しているということになる.認識しているならmemcpy_mcsafe()が呼ばれるのはdrives/nvdimm/pmem.cから分かる.
-
結局memcpy_mcsafe()が遅いっていうところがannoyingということなんだろうか.それだけだったようには思えないが?
Merge tag 'devdax-for-5.1' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm
HotOS 2019 で Microsoft Research からの論文である.Unixの代表的なシステムコールであるfork()についての問題点を挙げている.
fork()は最も基本的なシステムコールといっても良く,新しいプロセスを作るときに使われる.今回の論文の主張はfork()は1970年代のマシンではハックと呼べるものだったが,現代では過去の負債となっているというものでおり,カーネルから完全に取り除くべきであるというものである.ただし,ここでいうカーネルとはLinuxカーネルのことを直接指しているのではなく,著者の先行研究でのOSの実装のことを指している.
面白いのは,fork()は研究者にとっては研究を阻害するといったことや,教育者は歴史としては教えるべきだが最初に教わるべきプロセス作成の仕組みとしてはふさわしくないといった中々過激なことを言っているところである.
現代的なコンピュータシステムにおける問題点として次のようなことが挙げられている.
- かつてはシンプルであったが,最早そうではない
- 25もの特別なケースが親プロセスの状態を子プロセスにコピーするときに存在する.例えば,ファイルロック,タイマー,非同期IOやトレーシングなど.また,コピー後のメモリマッピングに関して,madvice()に与えるフラグも非常に多いものとなっている.
diff --git a/scripts/Makefile.build b/scripts/Makefile.build | |
index 0d434d0afc0b..63eb7ab3e06a 100644 | |
--- a/scripts/Makefile.build | |
+++ b/scripts/Makefile.build | |
@@ -458,7 +458,7 @@ endif | |
# module is turned into a multi object module, $^ will contain header file | |
# dependencies recorded in the .*.cmd file. | |
quiet_cmd_link_multi-m = LD [M] $@ | |
- cmd_link_multi-m = $(LD) $(ld_flags) -r -o $@ $(filter %.o,$^) | |
+ cmd_link_multi-m = $(LD) $(ld_flags) -r -o $@ $(filter %.o %.a,$^) |