RHCA rh442 004 加载模块 ulimit cgroup
模块调优
lsmod 可以看到内核加载的模块
[root@servera ~]# lsmod | grep usb
[root@servera ~]# modprobe usb_storage
[root@servera ~]# lsmod | grep usb
usb_storage 73728 0
[root@servera ~]#
模块名 大小 加载次数
手动加载出来 显示是0 这个模块不是按需加载出来的
当我插入u盘时,他会自动加载这个模块
[root@servera kernel]# modinfo e1000
parm: TxDescriptors:Number of transmit descriptors (array of int)
parm: RxDescriptors:Number of receive descriptors (array of int)
parm为参数
查看e1000模块
modinfo st
只有加载模块后,模块文件夹才会出现
[root@servera drivers]# ls
[root@servera drivers]# pwd
/sys/bus/scsi/drivers
[root@servera drivers]# cd
[root@servera ~]# modprobe st
[root@servera ~]# cd -
/sys/bus/scsi/drivers
[root@servera drivers]# ls
st
[root@servera drivers]#
[root@servera drivers]# modprobe -r st
[root@servera drivers]# ls
[root@servera drivers]#
如何改变模块参数呢
这里的参数得去/etc里面改
[root@servera drivers]# modprobe st
[root@servera drivers]# ls
st
[root@servera drivers]# cd st/
[root@servera st]# ls
bind debug_flag fixed_buffer_size max_sg_segs module try_direct_io uevent unbind version
[root@servera st]# cat fixed_buffer_size
32768
[root@servera st]#
改默认st参数
[root@servera st]# cat /etc/modprobe.d/st.conf
options st buffer_kbs=128
修改配置文件后重新加载模块
[root@servera drivers]# cat st/fixed_buffer_size
131072
参数buffer缓存被因我们设置变大
[root@servera drivers]# pwd
/sys/bus/scsi/drivers
[root@servera st]#
这个模块配置文件,在红帽8里写错了,还是默认值,不会用你错误的输入
加载模块时,会去modprobe.d下面读文件
模块都是按需加载
st为scsi磁带机驱动,你没有这个需求,自然模块也不加载
有设备模块自动加载
看模块会不会被设置成开机自动加载
[root@servera ~]# cd /etc/sysconfig/modules/
[root@servera modules]# cat st.modules
#!/bin/bash
modprobe st
[root@servera modules]# chmod u+x st.modules
[root@servera modules]# lsmod | grep st
st 65536 0
usb_storage 73728 0
[root@servera modules]# modprobe -r st
[root@servera modules]# lsmod | grep st
usb_storage 73728 0
[root@servera modules]# reboot
手动加载,是加载到内存,关机就失效
开机时,会读到modules下面的文件,将模块加载,加载使去到/etc/modprobe.d/下面读模块配置文件
[root@servera drivers]# pwd
/lib/modules/4.18.0-80.el8.x86_64/kernel/drivers
[root@servera drivers]# ls
acpi cpufreq firmware iio media net pinctrl rtc uwb
ata crypto gpio infiniband memstick ntb platform scsi vfio
bcma dax gpu input message nvdimm power target vhost
block dca hid iommu mfd nvme powercap thermal video
bluetooth dma hv isdn misc parport pps tty virtio
cdrom edac hwmon leds mmc pci ptp uio watchdog
char firewire i2c md mtd pcmcia pwm usb xen
[root@servera drivers]#
系统中有很多模块已安装只是未加载
[root@servera 4.18.0-80.el8.x86_64]# pwd
/lib/modules/4.18.0-80.el8.x86_64
[root@servera 4.18.0-80.el8.x86_64]# cat modules.dep
这个文件有模块的路径 系统通过这个文件来寻找模块
[root@servera 4.18.0-80.el8.x86_64]# modprobe sa
modprobe: FATAL: Module sa not found in directory /lib/modules/4.18.0-80.el8.x86_64
[root@servera 4.18.0-80.el8.x86_64]#
[root@servera 4.18.0-80.el8.x86_64]# grep -w st modules.dep
kernel/drivers/scsi/st.ko.xz:
[root@servera 4.18.0-80.el8.x86_64]#
案例

2.6.18-164 kernel
RHEL5.4 可以正常开机
升级内核
2.6.27 kernel 启动系统 起不来
在我笔记本电脑中,安装 RHEL5.4,升级到 2.6.27,进入 2.6.27 内核,编译安装 LSI2008 驱
动,产生 RAID 卡模块
然后将 RAID 卡模块拷贝到 RHEL5.4 系统中
/lib/modules/2.6.27/kernel/lsi2008/lsi2008.ko
再进入 DELL 服务器 RHEL5.4 系统,将该模块导入到 initrd.img 文件中
首先,我可以在自己的笔记本电脑中,升级内核到 2.6.27,通过新内核启动系统,在该内核
中编译安装 lsi2008 RAID 卡驱动,为什么不能在 RHEL5.4 系统中编译呢? 如果在 RHEL5.4
系统中编译,产生的模块只能在 RHEL5.4 中可用
为什么是在我的笔记电脑中执行呢?DELL 服务器 2.6.27 内核无法进入,所以无法在 DELL 服
务器中编译
一旦在我的电脑中编译完成,拷贝到 DELL 服务器中 2.6.27 内核文件夹中
将编译好的模块封装到 initrd.img 文件中
为什么不需要将网卡驱动封装到 initrd.img 文件中?
initrd.img 文件是加载根分区所需要的驱动
加载根分区不需要网卡驱动,但需要 RAID 卡和硬盘驱动
一旦根分区被加载,则可以读取到其他驱动,因为其他驱动都在根分区中
RHEL5-RHEL6:
#mkinitrd --with=e1000 -f /boot/initrd-$(uname -r).img $(uname -r)
RHEL7-RHEL8:
#dracut --add-driver e1000 -f /boot/initramfs-$(uname -r).img $(uname -r)
有内核就只装e1000驱动
[root@servera modules]# modinfo -p loop
max_loop:Maximum number of loop devices (int)
max_part:Maximum number of partitions per loop device (int)
这样也可以加载完模块读取参数
modprobe loop max_loop=6
资源控制
[root@servera ~]# vi /etc/security/limits.conf
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#@student - maxlogins 4
user1 soft as 81960
user1 hard as 204800
增加user1 soft与user1 hard
这个soft设置为10M登录都不行
[user1@servera ~]$ ulimit -a
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 7128
max locked memory (kbytes, -l) 16384
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 7128
virtual memory (kbytes, -v) 81960
file locks (-x) unlimited
[user1@servera ~]$ ulimit -v 204800
[user1@servera ~]$ ulimit -a
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 7128
max locked memory (kbytes, -l) 16384
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 7128
virtual memory (kbytes, -v) 204800
file locks (-x) unlimited
默认你不能超过81960 系统当中,你写满软限制,就不准你写,但是还是有可能超过软限制
所以需要硬限制的存在
cgroup
Control group 控制组
Docker容器 cgroup资源限制 (某容器得到很多资源其他容器就没有了) namespace隔离
cgroup也是运行在内存
红帽6
配置文件
group supermao {
memory {
memory.limit_in_bytes = 256m;
}
blkio {
blkio.throttle.read_bps_device = "8:0 1048576";
}
}
启动服务
谁会受到影响
*:cp blkio,memory supermao/
cp只能用256M内存
任何人使用cp命令时 只要用到块设备读写 就会受到supermao影响
watch -n 1 dush -sh /tmp/etc
bigmem 申请内存
*:bigmem memory bigdata/
任何人执行bigmem 会被bigdata的memory限制
用户与命令,但是不方便对服务做限制
红帽8
尝试对服务进行控制
安装vsftpd服务

写配置文件 (这是写子配置文件,不能改usr/lib/systemd/system/vsftpd.service)
这个配置文件可以照着 /usr/lib/systemd/system 下面的vsftpd写(删除不需要的)

怎么得出的两个参数呢
man -k systemd 会发现有一个值叫 systemd.resource-control
它在第五章,那么
man 5 systemd.resource-control
里面有我需要控制参数

另一种查看服务是否被限制的方式
[user1@servera ~]$ cd /sys/fs/cgroup/memory/
[user1@servera memory]$ cd system.slice/
[user1@servera system.slice]$ cd vsftpd.service/
[user1@servera vsftpd.service]$ cat tasks
2882
[user1@servera vsftpd.service]$ pwd
/sys/fs/cgroup/memory/system.slice/vsftpd.service
[user1@servera vsftpd.service]$ pidof vsftpd
2882
[user1@servera vsftpd.service]$ cat memory.limit_in_bytes
268435456
[user1@servera vsftpd.service]$ bc
bc 1.07.1
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006, 2008, 2012-2017 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
256*1024*1024
268435456
除了vsftpd以外的服务都没被限制
[user1@servera memory]$ pwd
/sys/fs/cgroup/memory
[user1@servera memory]$ cat tasks | grep 2882
[user1@servera memory]$ cat tasks
1
2
3
4
6
8
9
10
11
12
13
14
[user1@servera memory]$ cat memory.limit_in_bytes
9223372036854771712
容器限制
docker run -it -m 200M --momory-swap 300M ubuntu:16.04
docker run -it -m 200M --memory-swappiness 0 (不使用swap只使用内存)
progrium/stress --vm 1 --vm-bytes 180M
压力测试 一个进程 180内存

-c 在资源紧缺时,谁更能抢
1024更能抢
虚拟机同理,参数叫cpuweight 可以查到 (man 5 systemd.resource-control)

尝试了一下自己编译内核,还是懒了,不想排错、很简单的玩意
RHCA rh442 004 加载模块 ulimit cgroup的更多相关文章
- AngularJs 通过 ocLazyLoad 实现动态(懒)加载模块和依赖
好了,现进入正题,在 AngularJs 实现动态(懒)加载主要是依赖于3个主JS文件和一段依赖的脚本. 实现的过程主要是引用3个主要的JS文件 <script src="angula ...
- AngularJs 动态加载模块和依赖
最近项目比较忙额,白天要上班,晚上回来还需要做Angular知识点的ppt给同事,毕竟年底要辞职了,项目的后续开发还是需要有人接手的,所以就占用了晚上学习的时间.本来一直不打算写这些第三方插件的学习笔 ...
- thinkphp pathinfo nginx 无法加载模块:Index
thinkphp 报了 无法加载模块:Index 错误位置 FILE: /var/multrix/wxactivity_archive/ThinkPHP/Library/Think/Dispatche ...
- AngularJS中多个ng-app(手动加载模块)
1.当有多个ng-app时:(首先是要加载angularJS) <div ng-app=""> <p>姓名:<input type="tex ...
- Unity加载模块深度解析(纹理篇)
在游戏和VR项目的研发过程中,加载模块所带来的效率开销和内存占用(即“加载效率”.“场景切换速度”等)经常是开发团队非常头疼的问题,它不仅包括资源的加载耗时,同时也包含场景物件的实例化和资源卸载等.在 ...
- Unity加载模块深度解析(Shader)
作者:张鑫链接:https://zhuanlan.zhihu.com/p/21949663来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 接上一篇 加载模块深度解析(二 ...
- Unity加载模块深度解析(网格篇)
在上一篇 加载模块深度解析(一)中,我们重点讨论了纹理资源的加载性能.这次,我们再来为你揭开其他主流资源的加载效率. 这是侑虎科技第53篇原创文章,欢迎转发分享,未经作者授权请勿转载.同时如果您有任何 ...
- thinkphp无法加载模块解决办法
前台入口文件index.php <?php //前台入口 define('THINKPHP_PATH', '../ThinkPHP/');//底层的位置 define('APP_PATH', ' ...
- 添加删除程序无法安装IIS 提示没法加载模块
添加删除程序无法安装IIS 提示没法加载模块 安装iis的时候提示 解决办法:依次是 属性--高级--系统变量--Path 变量值是:%SystemRoot%\system32;%SystemRoo ...
- ThinkPhp3.2 无法加载模块:Index
http://localhost:444/admin/index.php/Index/index出错:无法加载模块:Index http://localhost:444/admin/index.php ...
随机推荐
- Canny边缘检测实现(Opencv C++)
Canny边缘检测是Canny在1986年提出来的,目前仍是图像边缘检测算法中最经典.先进的算法之一.canny方法基于如下三个基本目标: 1. 低错误率:所有边缘都应被找到,并且不应有虚假响应. 2 ...
- 基于ReAct机制的AI Agent
当前,在各个大厂纷纷卷LLM的情况下,各自都借助自己的LLM推出了自己的AI Agent,比如字节的Coze,百度的千帆等,还有开源的Dify. 你是否想知道其中的原理?是否想过自己如何实现一套AI ...
- .NET C#程序启动闪退,在安装或者程序文件下能正常运行,但通过路径却无法运行
.NET C#程序启动闪退,目录导致的问题 这是第2次踩这个坑了,很小的编程细节,容易忽略,所以写个博客,分享给大家. 1.第一次坑:是windows 系统把程序运行成服务,找不到配置文件,原因是以服 ...
- C#.NET 操作FTP
工具类: using System; using System.Collections.Generic; using System.IO; using System.Net; namespace Co ...
- koishi-跨平台、可扩展、高性能的机器人
koishi 介绍 Koishi 是一个跨平台.可扩展.高性能的聊天机器人框架. 它的名字和图标设计来源于东方 Project 中的角色 古明地恋 (Komeiji Koishi).古明地恋是一个会做 ...
- web框架及Django简介
WEB框架 Web框架是一种开发框架,用来支持动态网站.网络应用和网络服务的开发.这大多数的web框架提供了一套开发和部署网站的方式,也为web行为提供了一套通用的方法. web框架已经实现了很多功能 ...
- nginx location实战
nginx location高级实战 location是nginx的核心重要功能,可以设置网站的访问路径,一个web server会有多个路径,那么location就得设置多个. Nginx的loca ...
- idea 中的 jrebel
1.打开idea设置 ,下载 jrebel 2搜索下载jrebel 3.重启之后,在右下角有个弹窗,这时候选择enable,然后右边的侧边栏工具会弹出一个界面,总共应该有4步,第一步是展开的,点击蓝色 ...
- leetcode | 107. 二叉树的层序遍历 II | javascript实现 | c++实现
题目 给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 . (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 思路 题目的要求相当于是求层序遍历数组的转置,我们只需利用js的 ...
- 前端使用 Konva 实现可视化设计器(15)- 自定义连接点、连接优化
前面,本示例实现了折线连接线,简述了实现的思路和原理,也已知了一些缺陷.本章将处理一些缺陷的同时,实现支持连接点的自定义,一个节点可以定义多个连接点,最终可以满足类似图元接线的效果. 请大家动动小手, ...