macos 性能测试 内核优化配置

解决mac 在糟糕网络下 tcp/http 等连接较高概率超时失败问题

经过定位,应该是系统的tcp 和 socket连接数太小的问题,导致开大量应用后会出现该问题

1.增加 max files:

解决mac 在糟糕网络下 tcp/http 等连接较高概率超时失败问题

经过定位,应该是系统的tcp 和 socket连接数太小的问题,导致开大量应用后会出现该问题

1.增加 max files:

sysctl -a | grep files
kern.maxfiles = 12288
kern.maxfilesperproc = 10240

#设置系统最大连接数从12288到1048600.
sudo sysctl -w kern.maxfiles=1048600

#设置进程连接数限制,进程的最大连接数要小于等于全局连接数
sudo sysctl -w kern.maxfilesperproc=1048576

2.增加max sockets:

sysctl -a | grep somax
kern.ipc.somaxconn: 256
sudo sysctl -w kern.ipc.somaxconn=4096

3.设置动态端口范围portrange

sysctl net.inet.ip.portrange
net.inet.ip.portrange.first: 49152
net.inet.ip.portrange.last: 65535

说明:Linux动态端口号默认范围是32768-65535,也就是说,作为客户端连接同一个IP和同一个端口号,最多只能建立30000多个连接,而Mac默认只能建立16000个左右的连接。
sudo sysctl -w net.inet.ip.portrange.first=32768

4.tcp最大分段寿命
sysctl net.inet.tcp.msl
net.inet.tcp.msl: 30000

说明:最大段寿命*是一个 [TCP] [分段]可以存在于互联网系统中的最大时间。它被任意地定义为两分钟长。最大段寿命的值用来确定 TIME_WAIT 周期(最大段寿命的两倍)
sudo sysctl -w net.inet.tcp.msl=5000

说明:设置tcp失败后回收时间,由默认的30s修改为5秒,一般方便性能测试。

5.设置ulimit
ulimit -n 
说明:命令显示当前shell能打开的最大文件数,默认值:256,该值总是小于kern.maxfilesperproc的值,因为一个shell就是一个进程。
ulimit -n 1048576

6.确保重启后参数生效(永久设置)
6.1按以上的方式设置参数有个问题,当系统重启后,这些参数又恢复成了默认值,解决办法就是把参数写到/etc/sysctl.conf文件中,但是,默认macos这个文件是不存在的,所以首先就要创建它:
sudo touch /etc/sysctl.conf
然后把参数写到文件里
kern.maxfiles=1048600
kern.maxfilesperproc=1048576
kern.ipc.somaxconn=4096
net.inet.tcp.msl=5000
net.inet.ip.portrange.first=32768
#net.inet.ip.portrange.last=65535

至于ulimit-n的值,可以把ulimit-n1048576 写到.bashrc中实现自动修改。

查看批量查看结果

ulimit -n 

sysctl kern.maxfiles kern.maxfilesperproc kern.ipc.somaxconn net.inet.tcp.msl net.inet.ip.portrange.first net.inet.ip.portrange.last

最后修改参数总结:(临时设置)
sudo sysctl -w kern.maxfiles=1048600
sudo sysctl -w kern.maxfilesperproc=1048576
sudo sysctl -w kern.ipc.somaxconn=4096
sudo sysctl -w net.inet.tcp.msl=5000
sudo  sysctl -w net.inet.ip.portrange.first=32768
ulimit -n 1048576

如何改变Android手机软件的安装位置,一般需要什么步骤?

参考资料网站:机锋网

谷歌Android系统手机默认只能把软件安装在手机内存里,使本来就不大的手机内存显得捉襟见肘。如果你也是个手机软件狂人,喜欢尝试各种各样新奇有趣的软件,面对越来越少的手机内存空间,不得不对已经安装的软件痛下**。你是否还在安装与卸载之间纠结?Follow Me!我们一起来给Android系统扩扩容,让“机器人”也可以“大肚能容”,免去存储空间不足的后顾之忧。


Tips:存储器分为随机存储器(RAM)和只读存储器(ROM)两种。手机ROM相当于PC上的硬盘,用于存储手机操作系统和软件,也叫FLASH ROM,决定手机存储空间的大小。手机RAM相当于PC的内存,其大小决定手机的运行速度。


要把Android系统中把软件安装到SD卡上,很简单,两步就够了:

一、存储卡分区

      首先我们需要对手机SD卡进行分区,分一个FAT32分区和一个Ext3分区,FAT32分区用于正常存储图片、音乐、视频等资料,而Linux格式的Ext3分区就是用于扩容安装软件的分区。以笔者的2G SD卡为例,FAT32分区1.35GB,Ext3分区494MB。下载并安装Acronis Disk Director Suite软件。将手机SD卡装入读卡器并连接电脑,然后运行Acronis Disk Director Suite软件。

      1.FAT32分区。找到代表SD卡的磁盘分区,点击右键,选择“删除”命令,删除已有分区。当成为“未分配”分区时,点击右键,选择“创建分区”,在弹出的对话框中,文件系统选择:FAT32,创建为“主分区”,设置好分区大小1.35GB,点击确定按钮。
      2.Ext3分区。在剩余的494MB分区上,点击右键,选择“创建分区”,在弹出的对话框中,文件系统选择:Ext3,创建为“主分区”,设置好分区大小494MB,点击确定按钮。
      3.确认分区。上述分区设定完成后,软件只是记录了分区操作,并没有真正在SD卡上进行分区。点击软件工具栏中的“提交”按钮,确认执行分区操作,提示“操作成功完成”说明分区成功了。

二、将软件移动到SD卡

      存储卡分区完成后我们只需要把系统默认的软件安装目录/data/app转移到SD卡的Ext3分区上,然后通过ln命令建立软链接,使系统自动把软件安装到SD卡上,达到节省手机内存空间的目的。

将存储卡装回手机,重新启动,使系统识别到Ext3分区。在手机上运行超级终端,依次输入以下命令来验证系统是否识别了Ext3分区:

su  (会提示高级权限授权,选择“总是同意”)
busybox df –h
如果显示的列表中有/dev/block/mmcblk0p2的信息说明系统已成功识别了Ext3分区。

然后依次输入以下命令将/data/app目录转移到SD卡的Ext3分区:
cp –a /data/app /system/sd/ 
(将/data/app目录复制到/system/sd/下)
rm –r /data/app
(删除/data/app目录)
ln –s /system/sd/app /data/app
(建立软链接)
Reboot
(重启手机)


      重启之后,手机上安装的所有软件就全部转移到了SD卡上,看看你的手机可用空间是不是增大了。以后再安装软件也是直接安装到SD卡上,不用担心空间不足的问题了,而且这样做还有一个好处,刷新ROM后,以前安装过的软件并没有被清除,还保存在SD卡上,输入下列命令就可以轻松恢复,不用再一一安装了,非常方便实用。

su
(取得高级权限)
cd /data
(进入/data目录)
cp –a app /system/sd/app
(将app目录中的内容复制到/system/sd/app目录)
rm –r app
(删除app目录)
ln –s /system/sd/app /data/app
(建立软链接)
reboot
(重新启动)
扩容效果体验:
刷新ROM后未安装任何软件,手机可用空间为87MB,安装若干软件后,可用空间下降为73MB。将软件目录转移到SD卡上后,可用空间变为80MB。可能有的“电筒”会有疑惑,为什么没恢复到87MB呢?这是因为我们只是将软件移动到了SD卡上,而软件的缓存数据仍然会占用手机内存,所以手机内存还是会下降。当然软件的缓存数据也可以移动到SD卡上,但这样会拖慢软件运行速度,所以不推荐大家使用。
注意事项:
1.软件移动到SD卡上后,原有的部分桌面插件会无法正常显示,删除后,重新加入桌面即可。
2.SD卡的Ext3分区可以视为手机硬件的一部分,移除SD卡后,安装的软件将无法运行。插入SD卡,重新启动手机即可正常使用。