相关疑难解决方法(0)

Linux - 真实世界的硬件 RAID 控制器调整(scsi 和 cciss)

我管理的大多数 Linux 系统都具有硬件 RAID 控制器(主要是HP Smart Array)。他们都在运行 RHEL 或 CentOS。

我正在寻找真实世界的可调参数,以帮助优化将硬件 RAID 控制器与 SAS 磁盘(智能阵列、Perc、LSI 等)和电池后备或闪存后备缓存相结合的设置的性能。假设 RAID 1+0 和多个主轴(4 个以上的磁盘)。

我花了大量时间为低延迟和金融交易应用程序调整 Linux 网络设置。但其中许多选项都有详细记录(更改发送/接收缓冲区、修改 TCP 窗口设置等)。工程师在存储方面做什么?

从历史上看,我对I/O 调度电梯进行了更改,最近选择了deadlinenoop调度程序来提高我的应用程序的性能。随着 RHEL 版本的进步,我还注意到 SCSI 和 CCISS 块设备的编译默认值也发生了变化。随着时间的推移,这对推荐的存储子系统设置产生了影响。但是,我已经有一段时间没有看到任何明确的建议了。而且我知道操作系统默认设置不是最佳的。例如,对于服务器级硬件上的部署而言,128kb 的默认预读缓冲区似乎非常小。

以下文章探讨了更改预读缓存和nr_requests值对块队列的性能影响。

http://zackreed.me/articles/54-hp-smart-array-p410-controller-tuning
http://www.overclock.net/t/515068/tuning-a-hp-smart-array-p400-with -linux-why-tuning-really-matters
http://yoshinorimatsunobu.blogspot.com/2009/04/linux-io-scheduler-queue-size-and.html

例如,以下是 HP Smart Array RAID 控制器的建议更改:

echo "noop" > /sys/block/cciss\!c0d0/queue/scheduler 
blockdev --setra 65536 /dev/cciss/c0d0
echo 512 > /sys/block/cciss\!c0d0/queue/nr_requests
echo 2048 > /sys/block/cciss\!c0d0/queue/read_ahead_kb
Run Code Online (Sandbox Code Playgroud)

还有什么可以可靠地调整来提高存储性能?
我专门在生产场景中寻找 sysctl 和 sysfs 选项。

storage hp performance-tuning hp-smart-array hardware-raid

29
推荐指数
1
解决办法
2万
查看次数

如何使用 10Gb 光纤连接在 Linux 上微调 TCP 性能

我们有 2 台 Red Hat 服务器,专门用于客户速度测试。它们都使用 10Gb 光纤连接并位于 10Gb 链路上。这些服务器之间的所有网络设备都完全支持 10Gb/s。使用 Iperf 或 Iperf3,我能得到的最好的速度大约是 6.67Gb/s。话虽如此,一台服务器正在生产中(客户正在使用它),另一台服务器在线但未使用。(我们用它来测试 atm) 6.67Gb/s 也是一种方式,我应该提一下。我们将这些称为服务器 A 和服务器 B。

当服务器 A 作为 iperf 服务器时,我们获得了 6.67Gb/s 的速度。当服务器 A 作为服务器 B 的客户端时,它只能推送大约 20Mb/s。

我做了什么:

到目前为止,我所做的唯一一件事就是将两台服务器上的 TX/RX 缓冲区增加到最大值。一个设置为 512,另一个设置为 453。(仅 RX,TX 已经最大化)所以这里是更新后的样子:

Server A:
Ring parameters for em1:
Pre-set maximums:
RX:     4096
RX Mini:    0
RX Jumbo:   0
TX:     4096
Current hardware settings:
RX:     4096
RX Mini:    0
RX Jumbo:   0
TX:     4096

Server B:
Ring parameters for p1p1:
Pre-set maximums: …
Run Code Online (Sandbox Code Playgroud)

networking redhat kernel tcp

8
推荐指数
2
解决办法
2万
查看次数

在 LVM 上更改哪个调度程序以使虚拟机受益

当您拥有 LVM 时,您将拥有一个用于/sys/block物理卷、每个单独逻辑卷和原始设备的调度程序条目。

我们有一个运行 Xen 管理程序 4.0(3Ware 9650 SE 硬件 RAID1)的 Debian 6 LTS x64、内核 2.6.32 系统。在每个逻辑卷上运行虚拟机时,如果您想影响操作系统如何调度它们,您需要在哪个逻辑卷上设置调度程序?如果将逻辑卷设置为deadline,那么当物理卷设置为 时,它还会做任何事情cfq吗?如果您确实将它设置为逻辑卷上的截止日期,即使由于其他 LV 上的 IO 设置为 IO 而导致磁盘速度变慢,这些截止日期也会得到遵守cfq吗?

问题与虚拟机上的 IO 导致其他虚拟机速度减慢有关。所有来宾都在内部使用 noop 作为调度程序。

编辑:根据this,在多路径环境中,只有DM的调度程序才会生效。因此,如果我想以某种deadline方式处理虚拟机之间的 IO ,我必须将物理卷的 DM 路径(在我的情况下为 dm-1)设置为deadline. 那正确吗?还有sdc的调度器,是我dm-1的原始块设备。为什么不应该这样做呢?

edit2:但是有人在评论中说 dm-0/1 在较新的内核中没有调度程序:

famzah@VBox:~$ cat /sys/block/dm-0/queue/scheduler
none
Run Code Online (Sandbox Code Playgroud)

在我的系统(Debian 6,内核 2.6.32)上,我有:

cat /sys/block/dm-1/queue/scheduler 
noop anticipatory [deadline] cfq
Run Code Online (Sandbox Code Playgroud)

还有一个问题,我有多路径设置吗?pvs显示:

# pvs
PV         VG                 Fmt  Attr PSize PFree
/dev/dm-0  universe           lvm2 …
Run Code Online (Sandbox Code Playgroud)

linux lvm

5
推荐指数
1
解决办法
5191
查看次数

MySQL 在 CentOS 6x(不是 5x)上运行非常慢

我有两台服务器:一台 VPS 和一台笔记本电脑。我最近重新构建了它们,MySQL 在笔记本电脑上的运行速度慢了大约 20 倍。

两台服务器过去都运行 CentOS 5.8,我认为 MySQL 5.1,而笔记本电脑过去做得很好,所以我认为不是硬件。

对于 VPS,我的提供商安装了​​ CentOS 6.4,然后我使用带有 CentOS 存储库的 yum 安装了 MySQL 5.1.69。

对于笔记本电脑,我安装了 CentOS 6.4 基本服务器,然后使用带有 CentOS 存储库的 yum 安装了 MySQL 5.1.69。

两台服务器的 my.cnf 是相同的,我在下面显示了。对于这两个服务器,我还在下面的输出SHOW VARIABLES;以及 sysbench 的输出、文件系统信息和 cpu 信息中包含了这些信息。我试过添加skip-name-resolve,但没有帮助。

下面的矩阵显示了SHOW VARIABLES来自不同服务器的输出。同样,MySQL 的安装方式相同,所以我不知道它为什么不同,但确实如此,而且我认为这可能是笔记本电脑执行 MySQL 如此缓慢的原因。

为什么笔记本电脑运行 MySQL 很慢,我该如何解决?

SHOW VARIABLES两台服务器的区别

+---------------------------+-----------------------+-------------------------+
|         Variable          |       Value-VPS       |      Value-Laptop       |
+---------------------------+-----------------------+-------------------------+
| hostname                  | vps.site1.com         | laptop.site2.com        |
| max_binlog_cache_size     | 4294963200            | 18446744073709500000    |
| …
Run Code Online (Sandbox Code Playgroud)

mysql linux centos

3
推荐指数
1
解决办法
9337
查看次数