15AH, San Francisco

California, United States.

Send Your Mail At:

tianyingkejishe@sina.cn

Working Hours

Mon-Sat: 9.30am To 7.00pm

归档标题

Autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et dolore feugait.

月度归档 10月 31, 2022

【ubuntu】开机自启动

一、方法一

linux服务管理有两种方式service和systemctl

/lib/systemd/system/ 和 /etc/systemd/system 存放所有可用的单元文件

systemctl test.service start

比如需要开机启动 start_main 程序

第一步:编写要启动的sh脚本

例如 ubuntu@name:/home$ test.sh

#!/bin/bash
./home/start_main

第二步:编写start.service

#**** *.service***
# THIS IS A GENERATED FILE, NOT RECOMMENDED TO EDIT.
 
[Unit]
Description="startup service"
After=network.target
 
[Service]
Type=simple
ExecStart=/bin/bash /home/test.sh
 
[Install]
WantedBy=multi-user.target

将文件放在/usr/lib/systemd/system 或者 /etc/systemd/system目录下,然后可以测试一下:

sudo systemctl start test.service 
sudo systemctl enable test.service

设置test脚本开机启动。如果上一步没有出问题,这一步基本上也不会有什么问题,系统会打印出如下信息:

Created symlink /etc/systemd/system/multi-user.target.wants/test.service → /usr/lib/systemd/system/test.service.  

二、方法二

在/etc/init.d目录下创建链接文件到前面的脚本: ln -s /home/test/blog/startBlog.sh /etc/init.d/startBlog。 /或者直接在/etc/init.d目录下创建脚本,

进入/etc/init.d目录,用 update-rc.d 命令将连接文件 startBlog 添加到启动脚本中去:update-rc.d startBlog defaults 99。
其中的99表示启动顺序,取值范围是0-99。序号越大的越晚执行。

移除启动的脚本:update-rc.d -f startBlog remove。
-f选项表示强制执行。

【Linux】系统性能测试

一、内存测试

1、memtester是一个内存压力测试工具,主要是捕获内存错误和一直处于很高或者很低的坏位, 其测试的主要项目有随机值,异或比较,减法,乘法,除法,与或运算等等. 通过给定测试内存的大小和次数, 可以对系统现有的内存进行测试。

sudo apt install memtester 
//指令     测试内存大小   测试次数
memtester     240G          10

2、mbw是一个内存带宽测试工具,通常用来评估用户层应用程序进行内存拷贝操作所能达到的带宽,可测试在内存拷贝(memcpy)、字符串拷贝(dumb)、和内存卡拷贝(mcblock)三种方式下的内存拷贝速度。

sudo apt install mbw -y
mbw -q -n 10 245760
-q:隐藏日志
-n 10:表示运行10次
124000(MB):表示测试所用内存大小,用剩余内存的一半测试
#结果分析:
#只需关注平均值(AVG),内存分配速率越大,性能越好,三次AVG分别对应内存拷贝,字符串拷贝,内存卡拷贝。
nohup mbw -q -n 1000 124000 >> ./mbw.log 2>&1 & 
top -p mbw[pid]

二、系统实时测试

1、Cyclictest是rt-tests下一个使用最广泛的测试工具,主要用来测试使用内核的延迟,从而判断内核的实时性。

#sudo yum install numactl-devel   #CentOS安装
#apt-get install libnuma-dev   #Ubuntu安装

 #运行5个线程,线程优先级80,无限循环
sudo cyclictest -t 5 -p 80 -n  
#clock_nanosleep 线程优先级80,间隔10000微秒,10000次循环,无负载
cyclictest -t1 -p 80 -n -i 10000 -l 10000  
#POSIX间隔计时器 线程优先级80,间隔10000微秒,10000次循环,无负载
cyclictest -t1 -p 80 -i 10000 -l 10000

sudo cyclictest -t1 -p 80 -n -i 10000 -l 10000
结果:T: 0 (17769) P:80 I:10000 C:  10000 Min:  3 Act:  13 Avg: 14 Max: 36
结果分析:
T: 0 序号为0的线程
P: 0 线程优先级为0
C: 9397 计数器。线程的时间间隔每达到一次,计数器加1
I: 1000 时间间隔为1000微秒(us)
Min: 最小延时(us)
Act: 最近一次的延时(us)
Avg:平均延时(us)
Max: 最大延时(us)

2、实时操作系统的实时性能指标


2.1 指标1 中断响应时间(可屏蔽中断)

计算机接收到中断信号到操作系统作出响应,并完成切换转入中断服务程序的时间。对于抢先式内核,要先调用一个特定的函数,该函数通知内核即将进行中断服务,使得内核可以跟踪中断的嵌套。抢先式内核的中断响应时间由下式给出:中断响应时间=关中断的最长时间+保护CPU内部寄存器的时间+进入中断服务函数的执行时间+开始执行中断服务例程(ISR)的第一条指令时间中断响应时间是系统在最坏情况下响应中断的时间,某系统100次中有99次在50ms之内响应中断,只有一次响应中断的时间是250ms,只能认为中断响应时间是250ms。


2.2 指标2 任务切换时间

除为中断处理提供确定性外,实时处理也需要支持周期性间隔的任务调度。大量控制系统要求周期性采样与处理。某个特定任务必须按照固定的周期(p)执行,从而确保系统的稳定性。考虑一下汽车的防抱死系统(ABS)。控制系统对车辆的每个车轮的转速进行采样(每秒最多20次)并控制每个制动器的压力(防止它锁死)。为了保持控制系统的正常工作,传感器的采样与控制必须按照一定的周期间隔。这意味着必须抢占其他处理,以便ABS任务能按照期望的周期执行。当多任务内核决定运行另外的任务时,它把正在运行任务的当前状态(即CPU寄存器中的全部内容)保存到任务自己的栈区之中。然后把下一个将要运行的任务的当前状态从该任务的栈中重新装入CPU 的寄存器,并开始下一个任务的运行。这个过程就称为任务切换。做任务切换所需要的时间取决于CPU有多少寄存器要入栈。CPU 的寄存器越多,额外负荷就越重。

三、内存处理代码

四、CPU跑满测试

五、CPU满载测试

1、安装stress工具时,只需要打开终端,输入如下命令

sudo apt-get install stress

2、启动参数

stress --cpu 4