一些算法有几种实现,它们使用当前系统上可能可用或不可用的 CPU 指令。只启用(在内核中,而不是作为模块)所有这些是个好主意 - 即当前CPU上可用的最快实现将被自动选择吗?
另外,OpenSSL 会自动开始使用内核提供的这些优化实现,还是应该以某种方式配置?
一些算法有几种实现,它们使用当前系统上可能可用或不可用的 CPU 指令。只启用(在内核中,而不是作为模块)所有这些是个好主意 - 即当前CPU上可用的最快实现将被自动选择吗?
另外,OpenSSL 会自动开始使用内核提供的这些优化实现,还是应该以某种方式配置?
我正在从旧的网络工具转换我的脚本:
ifconfig eth0 192.168.2.1 netmask 255.255.255.0
到 iproute2:
ip link set eth0 up
ip addr add 192.168.2.1/24 dev eth0
我注意到新命令默认不设置广播地址。
什么是:
1: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 1c:6f:65:c5:d6:d7 brd ff:ff:ff:ff:ff:ff
inet 192.168.2.1/24 brd 192.168.2.255 scope global eth0
就是现在:
1: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 1c:6f:65:c5:d6:d7 brd ff:ff:ff:ff:ff:ff
inet 192.168.2.1/24 scope global eth0
我可以将广播地址添加到ip addr
命令中,但我想知道是否需要它?首先,这个广播地址是如何使用的,在哪里使用的?如果未设置,可能会破坏什么?其次,看起来路由表默认情况下仍然具有正确的条目:
# ip route show table local dev eth0 scope link
broadcast 192.168.2.0 proto kernel src 192.168.2.1
broadcast 192.168.2.255 proto kernel src 192.168.2.1
我什至不能测试它,因为现在没有人回复ping -b
。
我对 apache 有疑问。一切都是大约一周前开始的(所以这可能与最新的系统更新有关)——我的监控工具向我发送有关无法运行的网站的短信。我已经检查过了,看起来对普通 cgi 的请求(在 perl 中实现)花费了 30 秒。重新启动 apache 后,问题在接下来的几个小时/几天内得到解决,然后再次发生。
最初我怀疑是 php,因为它只是更新 (5.3.15->5.3.18),这可能会影响 apache。我已经尝试将其恢复到 5.3.15,但这并不能解决这个问题。
接下来,我做了 strace,看起来在 clone() 系统调用时发生了延迟:
[pid 26659] 1356268557.675934 clone( <unfinished ...>
[pid 26659] 1356268587.684401 <... clone resumed> child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0xa1033768) = 32169 <30.008452>
cgi 本身在此之后运行并且工作正常且快速:
[pid 32169] 1356268587.686614 execve("/var/www/mysite.com/mycgi.cgi", ["/var/www/mysite.com/mycgi.cgi"], [/* 26 vars */]) = 0 <0.000776>
为什么会发生这种情况的任何想法?clone(2) 如何以及为什么会阻塞 30 秒?!然后成功返回……看起来 clone() 中有一些超时,因为它总是恰好 30 秒。
我正在使用最新的 Hardened Gentoo Linux,内核 3.5.4-hardened-r1,apache 2.2.23(prefork,mod_cgi)。
更新:我可能应该补充:这台服务器没有高负载。Apache childs 仅使用大约 120/40 MB (VIRT/RSS)。服务器有 2GB RAM,只使用了 400MB(没有缓冲区/缓存)。
我正在尝试使用 VMware Workstation(6.5.3.185404 和 7.0.1.227600)在 32 位主机(Hardened Gentoo Linux,内核 2.6.28-hardened-r9)上启动 64 位客户机(MacOSX 和 Windows7)。
如果在 BIOS 中禁用 VT-X,VMware 会拒绝启动 64 位客户机(如预期的那样)。如果在 BIOS 中启用了 VT-X,VMware 会毫无怨言地启动来宾,但是在大约一秒钟内(我想一旦来宾尝试打开 64 位)我的主机就会重新启动(实际上,这更像是重置 - 正常的重新启动过程跳过并立即开始 BIOS POST)。
我的硬件是华硕 P5B-Deluxe 上的 Core 2 Duo 6600,具有最新的稳定 BIOS 1101。我已重启系统,然后在 BIOS 中启用了 Vanderpool。我的 CPU 不支持可信执行技术,并且无法在 BIOS 中禁用它。在那之后我重新启动了几次,有时会重新启动,并确保在 BIOS 中启用了 Vandertool。
我还运行了 VMware-guest64check-5.5.0-18463 工具,它报告“此主机能够在此 VMware 产品下运行 64 位来宾操作系统。”。
大约一年前,我尝试在内核中禁用强化以确保这不是因为 PaX/GrSecurity,但这无济于事。我还没有检查启用了 VT-X 的 32 位客户机,但没有 VT-X,它们可以正常工作。华硕提供“测试版”BIOS 更新,但根据他们的描述,这些更新并不能解决这个问题,所以我不确定尝试它是否是个好主意。
我现在最好的猜测是主板/BIOS错误。有任何想法吗?
更新 1:我尝试启动http://communities.vmware.com/docs/DOC-8978提供的 vt.iso ,报告如下:
CPU 0: VT is enabled on this core
CPU 1: VT is enabled on this core
更新 2:我刚刚尝试使用所有可能的虚拟化模式启动 32 位客户机(Windows7、Ubuntu9.04 和 Gentoo)。在Automatic
, 中Automatic with Replay
,Binary translation
一切正常,在Intel VT-x/EPT or AMD-V/RVI
我收到消息“此主机不支持 EPT。将软件虚拟化与软件 MMU 一起使用。” 一切正常。但是在Intel VT-x or AMD-V
模式下,所有 32 位来宾都像 64 位来宾一样重置主机!因此,此问题并非特定于 64 位客户机。
还有一件事。Intel VT-x or AMD-V
对两个 32/64 位来宾使用模式我的主机在启动 VM 后立即重置,即在 VM BIOS POST 之前和来宾甚至开始启动之前。但是使用Intel VT-x/EPT or AMD-V/RVI
VM BIOS 运行正常,然后 64 位客户机开始启动(Windows7 完成“加载文件”进度条),并且只有在主机重置之后。