一、网卡调优
二、OS内核调优
默认值:60
现象:用到swap时性能明显下降
修改建议:关闭swap内存的使用,将该参数设定为0
$ sudo sysctl vm.swappiness=0
默认值:32768
现象:通过cat /proc/sys/kernel/pid_max查看
修改建议:设置系统可生成最大线程数为4194303
$ echo 4194303 > /proc/sys/kernel/pid_max
“file-max”是设置系统所有进程一共可以打开的文件数量。同时一些程序可以通过setrlimit调用,设置每个进程的限制。如果得到大量使用完文件句柄的错误信息,则应该增加这个值。
默认值:13291808
现象:通过cat /proc/sys/fs/file-max
查看
修改建议:设置系统所有进程一共可以打开的文件数量,设置为cat /proc/meminfo | grep MemTotal | awk '{print $2}'
所查看到的值
$ cat /proc/meminfo | grep MemTotal | awk '{print $2}'
263850188
$ cat /proc/sys/fs/file-max
13060492
$ echo 263850188 > /proc/sys/fs/file-max
Linux的文件预读readahead,指Linux系统内核将指定文件的某区域预读进页缓存起来,便于接下来对该区域进行读取时,不会因缺页(page fault)而阻塞。
鉴于从内存读取比从磁盘读取要快很多,预读可以有效的减少磁盘的寻道次数和应用程序的IO等待时间,是改进磁盘读IO性能的重要优化手段之一。
默认值:128 KB
现象:预读可以有效的减少磁盘的寻道次数和应用程序的IO等待时间。通过**/sbin/blockdev –getra /dev/sdb**查看
修改建议:通过数据预读并且记载到随机访问内存方式提高磁盘读操作,调整为8192 KB
$ /sbin/blockdev --getra /dev/
/dev/sda
/dev/sdb
/dev/sdc
/dev/sdd
/dev/sde
/dev/sdf
/dev/sdg
/dev/sdh
/dev/sdi
Linux IO调度器是Linux内核中的一个组成部分,用户可以通过调整这个调度器来优化系统性能。
默认值:CFQ
现象:要根据不同的存储器来设置Linux IO调度器从而达到优化系统性能
修改建议:IO调度策略,HDD设置为deadline
,SSD设置为noop
echo noop > /sys/block/{sdb,sdc,....}/queue/schedule
默认值:128
现象:通过适当的调整nr_requests参数可以提升磁盘的吞吐量
修改建议:调整硬盘请求队列数,设置为512
echo 512 > /sys/block/{sdb,sdc,....}/queue/nr_requests
三、Cephfs 配置
机器配置:
[global]
默认值:4294967296 (4GB)
修改建议:8589934592 (4GB)
默认值:0
修改建议:1
[mon]
默认值:0.05
修改建议:1
默认值:2
修改建议:13
默认值:600
修改建议:600
[OSD]
默认值:5120
修改建议:20000
默认值:90
修改建议:512
默认值:100
修改建议:2147483648
默认值:524288
修改建议:131072
默认值:50
修改建议:1024
默认值:3
修改建议:2
默认值:3
修改建议:10
默认值:1
修改建议:4
默认值:3000
修改建议:30000
默认值:3000
修改建议:100000
默认值:30
修改建议:40
默认值:104857600
修改建议:1048576000
默认值:1024
修改建议:819200
默认值:5
修改建议:50
默认值:1
修改建议:0
默认值:10485760
修改建议:1073714824
默认值:100
修改建议:10000
[global]
fsid = <xxxxx>
mon_initial_members = <cephfs1>, <cephfs2>, <cephfs3>
mon_host = <ip1>,<ip2>,<ip3>
auth_cluster_required = none
auth_service_required = none
auth_client_required = none
public_network= <cidr>/24
[mon]
mon_clock_drift_allowed = 1 # monitor间的clock drift. 默认0.05
mon_osd_min_down_reporters = 8 # 向monitor报告down的最小OSD数. 默认2
mon_osd_down_out_interval = 600 # 标记一个OSD状态为down和out之前Ceph等待的秒数. 默认600
[OSD]
osd_pool_default_size = 2
osd_memory_target = 8589934592 # 每个OSD进程能申请到的内存大小 8GB
osd_pool_default_pg_num = 1024
osd_pool_default_pgp_num = 1024
osd_journal_size = 81920
osd_mkfs_type = xfs
osd_mkfs_options_xfs = -f
osd_max_write_size = 512 #默认值90 #OSD一次可写入的最大值(MB)
osd_client_message_size_cap = 2147483648 #默认值100 #客户端允许在内存中的最大数据(bytes)
osd_deep_scrub_stride = 131072 #默认值524288 #在Deep Scrub时候允许读取的字节数(bytes)
osd_op_threads = 16 #默认值2 #并发文件系统操作数
osd_disk_threads = 4 #默认值1 #OSD密集型操作例如恢复和Scrubbing时的线程
osd_map_cache_size = 1024 #默认值500 #保留OSD Map的缓存(MB)
osd_map_cache_bl_size = 128 #默认值50 #OSD进程在内存中的OSD Map缓存(MB)
osd_mount_options_xfs = "rw,noexec,nodev,noatime,nodiratime,nobarrier" #默认值rw,noatime,inode64 #Ceph OSD xfs Mount选项
osd_recovery_op_priority = 2 #默认值10 #恢复操作优先级,取值1-63,值越高占用资源越高
osd_recovery_max_active = 10 #默认值15 #同一时间内活跃的恢复请求数
osd_max_backfills = 4 #默认值10 #一个OSD允许的最大backfills数
osd_min_pg_log_entries = 30000 #默认值3000 #修建PGLog是保留的最大PGLog数
osd_max_pglog_entries = 100000 #默认值10000 #修建PGLog是保留的最大PGLog数
osd_mon_heartbeat_interval = 40 #默认值30 #OSD ping一个monitor的时间间隔(默认30s)
osd_op_log_threshold = 50 #默认值5 #一次显示多少操作的log
osd_crush_chooseleaf_type = 0 #默认值1 # CRUSH规则用到chooseleaf时的bucket的类型
filestore_xattr_use_omap = true
filestore_min_sync_interval = 10 #默认0.1#从日志到数据盘最小同步间隔(seconds)
filestore_max_sync_interval = 15 #默认5#从日志到数据盘最大同步间隔(seconds)
filestore_queue_max_ops = 25000 #默认500#数据盘最大接受的操作数
filestore_queue_max_bytes = 1048576000 #默认100 #数据盘一次操作最大字节数(bytes
filestore_queue_committing_max_ops = 50000 #默认500 #数据盘能够commit的操作数
filestore_queue_committing_max_bytes = 10485760000 #默认100 #数据盘能够commit的最大字节数(bytes)
filestore_split_multiple = 1600 #默认值2 #前一个子目录分裂成子目录中的文件的最大数量
filestore_merge_threshold = 40 #默认值10 #前一个子类目录中的文件合并到父类的最小数量
filestore_fd_cache_size = 204800 #默认值128 #对象文件句柄缓存大小
filestore_omap_header_cache_size = 204800
filestore_fiemap = true #默认值false #读写分离
filestore_ondisk_finisher threads = 2 #默认值为1
filestore_apply_finisher threads = 2 #默认值为1
mds_cache_size = 102400000
mds_beacon_grace = 120
mds_session_timeout = 15
mds_session_autoclose = 60
mds_reconnect_timeout = 15
mds_decay_halflife = 10
rbd_op_threads = 4
rbd_cache_size = 268435456
rbd_cache_max_dirty = 134217728
rbd_cache_max_dirty_age = 5
rbd_cache_max_dirty_object = 64
journal_max_write_bytes = 1073714824
journal_max_write_entries = 10000
journal_queue_max_ops = 50000
journal_queue_max_bytes = 10485760000
ms_async_op_threads = 5 #默认值3
ms_dispatch_throttle_bytes = 1048576000 #默认值 104857600 #等待派遣的最大消息数
objecter_inflight_ops = 819200 #默认值1024 #客户端流控,允许的最大未发送io请求数,超过阀值会堵塞应用io,为0表示不受限
client_caps_release_delay = 10
其他
「如果这篇文章对你有用,请随意打赏」
如果这篇文章对你有用,请随意打赏
使用微信扫描二维码完成支付