eBox 3350mx (vortex86mx SoC) 上的 FreeBSD shell (bash) 性能问题

eBox 3350mx (vortex86mx SoC) 上的 FreeBSD shell (bash) 性能问题

我有一个ebox 3350mx它充当无头家庭服务器,提供各种本地服务,如 dnsmasq、atalkd、时间机器备份、http、ssh 等。

我安装了 FreeBSD 9.0。主硬盘 (ada0) 是外置 SD 卡。规格如下512 MB 内存PMX-1000/Vortex86MX 处理器,频率 1Ghz

问题是慢的操作时。我做了一些修改,让它“运行”得更快,但巨大的痛苦缺少流畅的 shell 提示。

列出目录、用 vim 编辑文件、用 cat 读取文件等任务已经变得非常烦人。

我正在尝试弄清楚发生了什么。更糟糕的是,由于 ISP 的电缆问题,我目前无法上网,他们似乎明天就会解决这个问题。

我设法通过停止“sendmail”来提高速度:我的可用内存从仅仅 12 MB 增加到了 480 MB。显然 sendmail 的行为很奇怪,导致机器运行缓慢。

我关闭了 PAM 和 useDNS sshd_config,并停止了几乎所有服务。甚至 pflogd 和 pf。除了 sendmail 和 sshd_config 之外,它们中的大多数都产生了微小但可察觉的差异。但是,我的登录提示仍然像坏了的汽车一样运行。第一次发出“uptime”时,我得到了正常的响应,第二次发出命令时 -大约一秒后- 我需要等待 15 秒或按下“enter”键,屏幕上才会显示任何内容。有时按下“enter”键有效,就好像 tty 没有传送一样,有时甚至不起作用,就像 i/o 不起作用一样……但我根本没有收到任何 i/o 错误。

我有点绝望,因为我不知道从哪里开始寻找......在 FreeBSD 论坛上发帖如果您有兴趣的话,提供了一些 cmd 结果。

欢迎提出任何关于如何将 shell 的响应能力转变为“正常”的想法。

更新:

这是磁盘信息:

[user@comodino ~]$ dmesg |grep -i ada
ada0 at ata2 bus 0 scbus0 target 0 lun 0
ada0: <SD RDC SD-IDE HOST CONTROLLER 01000000> ATA-6 device
ada0: 33.300MB/s transfers (UDMA2, PIO 512bytes)
ada0: 15399MB (31537152 512 byte sectors: 16H 63S/T 31286C)
ada0: Previously was known as ad4
Trying to mount root from ufs:/dev/ada0p2 [rw]...

我也这么认为,这可能是一个 I/O。我的卡是 16 GB ADATA 10 级。

这是我的 iostat:

[user@comodino ~]$ iostat
tty            ada0            pass0             cpu
tin  tout  KB/t tps  MB/s   KB/t tps  MB/s  us ni sy in id
  0     1 24.03   0  0.00   0.00   0  0.00   0  0  0  0 100

我正在用 bonnie++ 做一些测试(http://www.coker.com.au/bonnie++/) 现在。我会尽快报告结果。感谢 Manoli 的回复 :-)

更新:以下是

[atma@comodino ~]$ bonnie++
Writing with putc()...done
Writing intelligently...done
Rewriting...done
Reading with getc()...done
Reading intelligently...done
start 'em...done...done...done...
Create files in sequential order...done.
Stat files in sequential order...done.
Delete files in sequential order...done.
Create files in random order...done.
Stat files in random order...done.
Delete files in random order...done.
Version 1.03e       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine            Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
comodino             1G  4156  24  4591   8  2993   7 14869  88 21277  27 100.8   2
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
             16  2804  58 10449  98  6559  88  2997  61 10711  99  4418  58    comodino,1G,4156,24,4591,8,2993,7,14869,88,21277,27,100.8,2,16,2804,58,10449,98,6559,88,2997,61,10711,99,4418,58

现在我必须解码结果:-P

答案1

/var和在哪里/tmp?对于 SD 系统,我喜欢映射/tmp -> /var/tmp并制作/varRAM 磁盘。以下选项/etc/rc.conf将在启动时自动设置 64MB /var。您仍然需要删除/tmp并使其成为符号链接。

# SD Card boot, RAM-Disk /var
varmfs="YES"            # Set to YES to always create an mfs /var, NO to never
varsize="64m"           # Size of mfs /var if created
varmfs_flags=""         # Extra mount options for the mfs /var
populate_var="YES"      # Set to YES to always (re)populate /var, NO to never
cleanvar_enable="NO"    # Clean the /var directory

答案2

这可能不是 shell 响应能力的问题,而是磁盘吞吐量非常低。首先检查 dmesg,看看你的 SD 卡使用什么传输模式:

您正在寻找类似这样的内容:

ada0:ATA-8 SATA 2.x 设备 ada0:150.000MB/s 传输(SATA、UDMA5、PIO 8192 字节)

可能是 SD 卡或控制器太慢了,SD 卡的速度各不相同 - 称为速度等级。理想情况下,您应该为 OS 磁盘使用 6 级或更高的速度。

但是可以进行一些优化,例如禁用不必要的日志记录和文件修改时间(在 fstab 中的挂载选项中使用 noatime)。

相关内容