4 温暖的电波

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 5w+

xenomai系统中timer校准简要分析

一、背景Xenomai为了提升系统的响应速度、减少响应延时在各个维度上都做了许多工作。其中为了减少定时器上的延时在定时器上实时了一个叫做gravity的校准,以尽可能的消除timer响应路径上的延时,确保定时器的响应时间更加接近用户的期望到期时间。二、gravity的默认值Xenomai初始化阶段会调用xnclock_init()函数来设置默认的gravity值,逻辑如下:s...

2020-02-13 10:30:22

aarch64异常(二)el0_irq

内核版本:linux-4.9.217el0_irq: kernel_entry 0el0_irq_naked: enable_dbg#ifdef CONFIG_TRACE_IRQFLAGS bl trace_hardirqs_off#endif ct_user_exit#ifdef CONFIG_HARDEN_...

2020-05-03 21:45:36

aarch64异常(一)aarch64异常简介

目录Aarch64中异常的基本概念异常发生时硬件做了哪些事情?异常的处理Aarch64中异常的基本概念在aarch64中,将中断、系统调用、数据指令异常等等情况统称为异常。异常会中断当前cpu执行流,转而执行具有更高权限的代码,即exception handler。当异常处理完毕后cpu会再次返回到之前的被中断的代码流继续执行。常见的异常有中断、系统调用、数据指...

2020-04-15 22:32:38

在两个不同的vim之间进行复制粘贴

转自:https://blog.csdn.net/trochiluses/article/details/9237379使用vim进行编辑的时候,如果我们打开了两个不同的vim,此时不能用yy和p在两个Vim窗口之间进行复制和粘贴,此时,需要分割窗口,然后就可以复制粘贴了。步骤如下:假如我们有两个需要编辑的文件a和b1.分割:此时先打开a,然后在命令界面下输入sp2.打...

2020-04-07 22:16:39

Registry私有仓库的镜像清理

一、背景 在私有registry仓库的场景中,对于私有镜像的升级操作是一个比较常见的操作。然而在我们升级私有镜像、并push到私有仓库后,升级前的镜像也就失去了它存在的意义;而随着时间的积累,旧镜像将会越来越多,旧镜像的数据有可能会占用大量磁盘空间。为了解决此问题,我们需要对私有仓库中的旧镜像进行清理以释放空间。二、具体操作2.1 清理blobs、_manifests和_lay...

2019-07-09 22:28:13

利用systemd的定时器来定时停止服务

需求背景:有时候我们有这样的一种需求:需要一些服务在定时运行一段时间后就停止。实现这种需求的方法有许多种,这里介绍一种基于systemd实现方式。场景:希望在dockerd服务在每次启动1个小时后就关闭服务。实现:利用systemd中的timer来实现。具体方法:1 创建定时器处理服务 在/usr/lib/systemd/system/目录下创建dockert...

2020-02-23 21:50:52

仿照taskset的任务亲和性设置小程序

#define _GNU_SOURCE#include <sched.h>#include <unistd.h> /* sysconf */#include <stdlib.h> /* exit */#include <stdio.h>int main(int argc, char *argv[]){ int i, nrcpu...

2020-01-21 20:43:33

如何为qemu制作Qcow2格式文件系统

一、 制作8G大小的raw镜像文件qemu-img create -f raw ./virt-disk 8G"上面的命名生成一个大小为8G的raw镜像virt-disk。二、将virt-disk于loop设备关联sudo losetup /dev/loop1 ./virt-disk三、对loop1进行分区sudo parted /dev/loop1"#这个步骤是交互...

2020-01-21 20:23:57

Docker run 容器处于created状态问题

在最近遇到的一次问题中,有这样一种现象: 系统有一个测试脚本会不断的执行docker run命令来运行容器,在测试过程中发现有一个情况是,有时候容器没有完全被运行到"Up"状态,而是处于"created"状 态,现象十分奇怪。 上环境首先查看了"created"状态的容器,以及dockerd日志: (1) dockerd的日志中只有"post create"请求,但是居然没...

2019-12-07 21:58:52

进程托孤

前言 我们知道,一个任务在消亡退出时通常会将子任务(后面用孤儿或者children表示)托付其他任务(后面用reaper表示)以便以后“收尸”,这个流程就是“托孤”。 托孤会为子任务寻找一个新的parent作为new reaper,那这个new reaper选谁呢?怎么选呢?会是传说中的1号进程么?这就是本文要去探索的问题。一、单身父亲的谢幕 作为一个单身父亲,没有...

2019-09-24 18:58:42

制作一个最简单ftpd容器镜像

准备基本的根文件系统镜像 先从dockerhub pull busybox镜像到本地。Pull完成后可以通过docker images看到busybox:latest镜像。准备entrypiont文件 然后编写entrypiont.sh作为ftpd镜像的入口函数。如下:#!/bin/shsh -c "exec tcpsvd 0 21 ftpd -w /"编写...

2019-08-07 21:59:57

制作简单的http镜像

一、编写简单的http服务首先写一个简单的http服务器程序:package mainimport ( "fmt" "net/http")type MyHandler struct{}//实现接口的ServeHTTP方法func (this *MyHandler) ServeHTTP(w http.ResponseWriter, r *http.Reques...

2019-08-07 21:59:19

交叉构建sqlite与libseccomp

背景 在交叉构建第三方的一些组件时需要依赖sqlite以及libseccomp,此时就需要先交叉构建sqlite和libseccomp。下面简单说明如何交叉构建sqlite和libseccomp。获取源码 可以根据自己需要分别从https://www.sqlite.org/download.html和https://github.com/seccomp/libseccom...

2019-07-20 10:15:08

cat /proc/$pid/smaps浅析(一)

引子 当我们执行cat /proc/pid/smaps读取某个进程对应的虚拟内存区间到信息显示给我们,整个过程究竟发生了什么呢? >>用户态open("/proc/pid/smaps")-->内核proc_pid_smaps_operations.open() >>用户态 read(fd) ...

2019-07-19 21:46:13

aarch64-linux-gnu/bin/ld: cannot find -lz collect2: error: ld returned 1 exit status解决方案

起因 从linaro下载的aarch64工具链不包含libz库,导致有些static参数的编译程序无法通过,出现类似如下问题:gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/6.3.1/../../../../aarch64-linux-gnu/bin/ld: ca...

2019-07-05 22:14:19

从一个问题看isolate出来的cpu的rt_rq的root_domain

现象描述: 在一个8核环境中,内核在启动时传入内核启动参数isolcpus=4,5,6,7 即将cpu4cpu5 cpu6 cpu7置为isolated核。系统启动后cpu4 cpu5 cpu6 cpu7通过cpu亲和性各自运行了一个死循环的实时任务,从top看出4,5,6,7这四个核的cpu利用率只能够跑到95%; 然而将内核启动参数改为isolcpus=3,4,5,6,...

2019-06-02 23:55:34

保留内存lowmem_reserve浅析

一、保留内存的用武之地 要了解内存区的保留内存,我们首先要知道这个保留内存用在何处。实际上它在内核水线计算时会用到,那内核是如何计算水线的呢?保留内存到底在水线计算起到什么作用呢?我们先来跟踪代码一探究竟。 为了方便说明,这里只针对UMA架构。UMA架构物理内存的分配最终由__alloc_pages_nodemask()函数实现。struct page * __alloc_...

2019-06-02 23:54:59

softlockup原理分析

一、概述 Softlockup主要用于检查cpu上的任务是否有无法被调度的情况发生。其原理就是在cpu上创建一个实时FIFO优先级为99的percpu内核线程(一般情况下可以认为是系统中优先级最高的任务),其名字为watchdog;此任务一般会由一个高精度定时器htimer定期唤醒,唤醒后watchdog线程会去执行“喂狗”操作(具体而言就是将当前的时间戳写到变量watchdog_tou...

2019-04-17 22:16:45

通过简单工具定位ext4文件系统中的裸数据

一、工欲善其事必先利其器  我在系统上通过如下2条命令创建了一个ext4格式的“内存磁盘”mkfs.ext4 /dev/ram0mount /dev/ram0 /ram  接着拷贝一些文件到 /ram目录下,其中一个就是 /ram/uio/uio_begin.sh  首先通过 dumpe2fs /dev/ram0了解到文件系统的如下信息Blocks per group: ...

2019-02-03 21:25:20

MIPS系统调用追踪(一)

说明:内核版本:4.4架构:mips64c库:glibc-2.24一、用户态到c库这里以系统调用 sync_file_range举例。原因有两点:一是这个系统调用在参数多达6个;二是参数中有64位参数,这个系统调用的原型为:int sync_file_range (int fd, __off64_t from, __off64_t to, unsigned int flags...

2019-02-01 20:17:02

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。