排序:
默认
按更新时间
按访问量

docker 性能debug

docker = namespace + cgroup + seccomp + capacity +selinux 遇到docker 性能,namespace可以用nsenters/setns 来debug cgroup 可以用cgexec来debug 其中seccomp/capacity/sel...

2018-05-22 19:42:02

阅读数:3

评论数:0

smp的负载均衡

在kernel中会注册一个软件中断来做负载均衡 __init void init_sched_fair_class(void) { #ifdef CONFIG_SMP open_softirq(SCHED_SOFTIRQ, run_rebalance_domains); endif /* SMP...

2018-05-22 14:39:00

阅读数:3

评论数:0

cpu的调度域初始化

cpu的调度域可以分为下面3类。目前arm都是用的mc static struct sched_domain_topology_level default_topology[] = { #ifdef CONFIG_SCHED_SMT { cpu_smt_mask, cpu_smt_flags, ...

2018-05-21 19:26:23

阅读数:3

评论数:0

mempolicy

vma目前有四种内存分配策略,这四种用法如下: * Support four policies per VMA and per process: * * The VMA policy has priority over the process policy for a page fault....

2018-05-18 14:57:11

阅读数:5

评论数:0

numabalance

numabalance的本意是让进程和其使用的memory在同一个numa节点上,这样延迟最小。但是这需要 调动器来做大量的工作来迁移进程和memory到同一个node上,这样对某些场景性能会有比较大的损耗。 一般debug时候如果perf top中看到迁移进程的函数则建议观点numabalanc...

2018-05-17 16:03:25

阅读数:10

评论数:0

ceph中用到的压缩引擎

ceph可以默认支持snappy/zlib/zstd,如果要支持lz4的话,必须打开宏HAVE_LZ4 set(compressor_srcs Compressor.cc) add_library(compressor_objs OBJECT ${compressor_srcs}) ## ...

2018-05-17 10:09:43

阅读数:19

评论数:0

arm64 页表映射

armv8最多支持48根地址,4级页表,这样最多支持user space和kernnel space 分别是256TB 其中user space占据低端地址 kernel可以支持48/42/39 根地址 # CONFIG_ARM64_VA_BITS_39 is not set CONFIG_ARM...

2018-05-16 19:29:17

阅读数:33

评论数:0

arm 的neon指令等同于arm64的asimd指令

在ceph 的src/test/test_arch.cc 中我们可以看到下面的code ,从kernel中的/proc/cpuinfo 中的feature 来判断arm是否支持neon指令,需要注意这个指令在armv8 之后被称为asimd指令 TEST(Arch, all) { ceph_a...

2018-05-16 09:34:47

阅读数:35

评论数:0

解开xz格式的initrd

原来suse 的initrd中也包含了ko啊

2018-05-14 20:37:45

阅读数:16

评论数:0

系统调用之getpid

这个函数用于获得线程组的领导线程的pid 其源码分析如下: SYSCALL_DEFINE0(getpid) { #这里可以看是当前进程 return task_tgid_vnr(current); } static inline pid_t task_tgid_vnr(struct task_...

2018-05-14 20:25:31

阅读数:22

评论数:0

ceph_perf_local

在ceph 源码ceph-master\ceph-master\src\test\CMakeLists.txt 中定义了一个ceph_perf_local的可执行文件,用于测试 不同平台对ceph性能的影响 #ceph_perf_local add_executable(ceph_perf_loc...

2018-05-14 14:34:34

阅读数:47

评论数:0

ceph中的threadpool

ceph中采用threadpool来增加并发性能 ThreadPool::ThreadPool(CephContext *cct_, string nm, string tn, int n, const char *option) : cct(cct_), name(std::move(nm)...

2018-05-11 14:54:44

阅读数:47

评论数:0

CephContext 中的AdminSocket

在CephContext 的构造函数中会新建一个AdminSocket和一个CephContextHook CephContext::CephContext(uint32_t module_type_, enum code_environment_...

2018-05-10 10:14:36

阅读数:11

评论数:0

系统调用之sys_nanosleep

这个系统调用会sleep 一段时间 其源码分析如下: SYSCALL_DEFINE2(nanosleep, struct timespec __user *, rqtp, struct timespec __user *, rmtp) { struct timespec64 tu; #得到...

2018-05-09 19:25:31

阅读数:10

评论数:0

wbthrottle限流

WBThrottle 是为让filestore来限流。 throttle的核心函数如下: void WBThrottle::throttle() { Mutex::Locker l(lock); while (!stopping && nee...

2018-05-09 11:08:03

阅读数:26

评论数:0

系统调用之sys_gettid

这个系统调用返回当前进程当前namespace中leader线程的pid 其源码分析如下: SYSCALL_DEFINE0(gettid) { #从这里可以看出是返回当前进程current return task_pid_vnr(current); } static inline pid_t ...

2018-05-08 19:33:31

阅读数:42

评论数:0

ceph 对动态加载类的管理

ceph提供了一个ClassHandler来管理动态链接库 使用ClassHandler 之前必要要先注册 ClassHandler::ClassData *ClassHandler::register_class(const char *cname) { assert(mutex.is_lo...

2018-05-08 19:11:52

阅读数:22

评论数:0

系统调用之sys_adjtimex

这个函数主要用于读取kernel时间,如果是superuser的话,则可以写kernel时间。 其源码分析如下: SYSCALL_DEFINE1(adjtimex, struct timex __user *, txc_p) { struct timex txc; /* Local copy ...

2018-05-07 19:20:21

阅读数:12

评论数:0

librbd

librbd是ceph 对外提供的块存储接口,这个接口了c/c++ 两种接口,接口提供的头文件分别在ceph-master\ceph-master\src\include\rbd\librbd.hpp和source\ceph-master\ceph-master\src\include\rbd\l...

2018-05-07 09:42:38

阅读数:38

评论数:0

系统调用之sys_settimeofday

这个函数用于设置系统当前时间。 其源码分析如下: SYSCALL_DEFINE1(stime, time_t __user *, tptr) { struct timespec64 tv; int err; #从user space的buffer中copy要设置的时间到tv.tv_sec中 ...

2018-05-04 19:37:37

阅读数:8

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭