syslinux,linux系统如何清理缓存?
要清理Linux系统的缓存,可以使用以下的方法,即通过重启系统来清理缓存。

重启系统是一种比较简单粗暴的方法,但在某些情况下可能是有效的。当系统运行时间较长,各种缓存积累较多,或者系统出现了一些异常情况时,重启系统可以清除所有缓存并重新初始化系统。
通过重启系统,内核会重新加载并初始化各个组件和模块,从而清除所有缓存。这可以帮助解决一些暂时性的问题,恢复系统的正常状态。
然而,需要注意的是,重启系统会导致系统中断和服务停止,可能会对正在运行的应用程序和用户造成影响。因此,在尝试清理缓存之前,建议先考虑其他更细致和非侵入性的方法,例如使用命令行工具手动清理特定类型的缓存,或者通过调整内核参数和配置来调节缓存大小和行为。
总之,通过重启系统可以清除Linux系统的缓存。这是一种相对简单但比较粗暴的方法,适用于一些临时性问题和系统状态恢复。在实际操作中,建议谨慎选择合适的方法来清理缓存,以平衡清理效果和系统稳定性。
80 qcow2格式的镜像怎么使用?
可以使用qemu自带的一个工具qemu-nbd来挂载一个客户机,具体步骤如下:(qemu-nbd 在普通的QEMU编译和安装后也会得到qemu-nbd工具,在Fedora中好像在“qemu-common”这个RPM包中。)1. 首先检查当前系统的kernel对NBD模块的支持(NBD:network block device),加载nbd这个module,如下:[root@jay-linux kvm_demo]# grep NBD /boot/config-3.5.0CONFIG_BLK_DEV_NBD=m[root@jay-linux kvm_demo]# modinfo nbdfilename: /lib/modules/3.5.0/kernel/drivers/block/nbd.kolicense: GPLdescription: Network Block Devicesrcversion: 56F31584CC2EB73E6F1DA69depends:intree: Yvermagic: 3.5.0 SMP mod_unload modversionsparm: nbds_max:number of network block devices to initialize (default: 16) (int)parm: max_part:number of partitions per device (default: 0) (int)parm: debugflags:flags for controlling debug output (int)[root@jay-linux kvm_demo]# modprobe nbd max_part=16[root@jay-linux kvm_demo]# lsmod | grep nbdnbd 7593 0如果当前kernel没有编译好nbd模块,则需要重新编译该模块(或编译整个kernel),在编译kernel时,“make menuconfig”配置kernel时中选择”Device Drivers –> Block devices –> Network block device support”.2. 将qcow2镜像映射为网络块设备(nbd),命令如下:[root@jay-linux kvm_demo]# qemu-nbd -c /dev/nbd0 rhel6u3.qcow2[root@jay-linux kvm_demo]# ll /dev/nbd0* #这里查看一下brw-rw---- 1 root disk 43, 0 Nov 1 20:51 /dev/nbd0brw-rw---- 1 root disk 43, 1 Nov 1 20:51 /dev/nbd0p1brw-rw---- 1 root disk 43, 2 Nov 1 20:51 /dev/nbd0p2qemu-nbd工具是:QEMU Disk Network Block Device Server,可以用”qemu-nbd –help”命令查看其帮助信息。3. 像普通block设备那样使用刚才映射好的网络块设备的分区即可,命令行如下:[root@jay-linux kvm_demo]# mount /dev/nbd0p1 /mnt/[root@jay-linux kvm_demo]# cd /mnt/[root@jay-linux mnt]# lsbin cgroup etc lib lost+found misc net proc sbin srv tmp varboot dev home lib64 media mnt opt root selinux sys usr[root@jay-linux mnt]# cd root/[root@jay-linux root]# touch nbd-test.txt #这里建立一个文件测试一下,若用这个qcow2 image作为guest启动后也可以看到改文件。4. 使用完这个qcow2镜像后,卸载已挂载的nbd设备,解除qcow2镜像与nbd设备的关联。
如何在windows上编译linux可用的动态链接库?
1、背景
最近的性能测试中,压测的某些接口返回的数据是一个复杂的json格式的字符串,而后续的接口中又需要把这个字符串修改后作为入参,自己处理起来比较麻烦。于是想到了把cjson编译成动态链接库在loadrunner的脚本中调用。另外,由于实际压测用的是部署在linux上的负载机,还需要再编译一个linux上的动态链接库。这样在调试时使用windows平台的dll,而在压测时使用linux平台的so。 先附上我编译好的动态链接库,可以直接在loadrunner中使用http://download.csdn.net/download/ultrahook/10126401
2、cjson
cjson是一个开源的json库,它的优势在于完全用c实现,因此适用性相当广,用在loadrunner中也是毫无压力。它的git主页是https://github.com/DaveGamble/cJSON。
3、windows平台
打开vsual studio(我用的是vs2015,其他版本也可以,codeblock也没问题,随你喜欢),新建一个win32程序,程序类型选择dll,附加选项选择空项目。把cJSON.c和cJSON.h拖到工程里。设置编译选项为release、x86(重要!),编译。将编译出来的cjson.dll放到loadrunner脚本的根目录下,然后在菜单File-Add file to script,添加cjson.dll。在代码中加载cjson.dll,然后就可以使用cjson的函数了。先尝试一下,
123注意这里cjson_Version返回的是指针,但loadrunner认为是int,所以要显式转成指针,不然编译不通过。
再看cjson解析字符串的函数。它的用法如下:
12这里需要用到cJSON.h中声明的结构体cJSON,但直接引用cJSON.h在loadrunner中编译不过。这个也有解决办法,把cJSON.h中cJSON这个结构体的定义代码复制到action的顶部就可以了,如图 cJSON.h中其他的变量或者宏也可以,如果编译时报错,复制过来就可以了。
4、Linux平台
下面再编译一个linux平台上的动态链接库,用在linux负载机上。 cjson的代码中带了MakeFile,也有cmake,可以直接编译。但如果linux系统是64位的,则默认编译的是64位的so,无法被loadrunner加载,会提示“wrong ELF class: ELFCLASS64”。我们需要手动修改MakeFile,让它编译一个32位的so。 1. 修改cJSON源码根目录下的MakeFile 打开MakeFile,分别在29、31、93、96行,增加-m32,如图 2. 在源码根目录下执行
12如果出现提示“fatal error: sys/cdefs.h: No such file or directory”,需要再装一个依赖库
123. 编译成功后,会得到名为libcjson.so.1.6.0的动态链接库。把它复制到loadrunner脚本的根目录下,同样菜单File-Add file to script,增加到脚本中。 4. 在脚本中加载so,这步和windows上是一样的。这样脚本就可以在linux下运行了。linux上安装负载机可以参考我的另一篇文章http://blog.csdn.net/ultrahook/article/details/78524182。
125、遗留问题
最后有个遗留问题,loadrunner似乎不支持平台宏,我想用宏控制,在windows下加载dll,linux下加载so,但没有找到解决方法。
不知道为什么在linux命令行下输入一些命令怎么都显示没有找到?
有几个原因:
一:你输入的命令本身不存在。
二:该命令是需要自己安装对应的rpm包后才能使用的,比如使用iostat需要安装sysstat工具后才能使用。
三:有时候不同linux版本的执行同一个操作所输入的指令是不一样的,请确认你的指令适合你的版本。
请教Linux关于UDP最大缓冲区设置?
1. tcp 收发缓冲区默认值 [root@ ]# cat /proc/sys/net/ipv4/tcp_rmem 4096 87380 4161536 87380 :tcp接收缓冲区的默认值 [root@ ]# cat /proc/sys/net/ipv4/tcp_wmem 4096 16384 4161536 16384 : tcp 发送缓冲区的默认值 2. tcp 或UDP收发缓冲区最大值 [root@ ]# cat /proc/sys/net/core/rmem_max 131071 131071:tcp 或 udp 接收缓冲区最大可设置值的一半。 也就是说调用 setsockopt(s, SOL_SOCKET, SO_RCVBUF, &rcv_size, &optlen); 时rcv_size 如果超过 131071,那么 getsockopt(s, SOL_SOCKET, SO_RCVBUF, &rcv_size, &optlen); 去到的值就等于 131071 * 2 = 262142 [root@ ]# cat /proc/sys/net/core/wmem_max 131071 131071:tcp 或 udp 发送缓冲区最大可设置值得一半。 跟上面同一个道理 3. udp收发缓冲区默认值 [root@ ]# cat /proc/sys/net/core/rmem_default 111616:udp接收缓冲区的默认值 [root@ ]# cat /proc/sys/net/core/wmem_default 111616 111616:udp发送缓冲区的默认值 4. tcp 或udp收发缓冲区最小值 tcp 或udp接收缓冲区的最小值为 256 bytes,由内核的宏决定; tcp 或udp发送缓冲区的最小值为 2048 bytes,由内核的宏决定


还没有评论,来说两句吧...