Articles of linux

numa和taskset

我正在尝试使用taskset将某些进程分配给特定的CPU。 当我运行taskset时,似乎命令已经工作,因为我得到一个答复,说明什么是新的亲和力设置。 但是,当我监视顶部输出(我试图分配一个CPU的进程,以高cpu百分比运行),我可以看到该进程仍在切换cpus,因此它看起来像任务集不工作。 当在网上search类似的问题时,我在红帽网站上看到一个posthttps://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_MRG/1.1/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-Realtime_Specific_Tuning-Non_Uniform_Memory_Access html的 这表明,任务集不能在numa启用的系统上工作。 这是这种情况吗? 我无法从其他地方find这个。 我正在使用的taskset命令是 taskset -pc 1-2 16723 pid 16723的当前关联性列表:0-7 pid 16723的新关联性列表:1,2 我也试过: taskset -p 0x00000001 16723 OS的版本是: 说明:Ubuntu 12.04.1 LTS版本:12.04 内核版本:Linux hadoop 3.2.0-29-generic#46-Ubuntu SMP Fri Jul 27 17:03:23 UTC 2012 x86_64 x86_64 x86_64 GNU / Linux 在我看看使用cgroup之前,我会认为taskset至less可以为进程分配cpu亲和力? 谢谢, 还要确认numa没有在我的主机上禁用从http://martincarstenbach.wordpress.com/2012/04/27/little-things-i-didnt-know-difference-between-_enable_numa_support-and-numactl/ more / proc / cmdline BOOT_IMAGE = / boot / […]

XFS添加配额 – 跳过第一次安装/引导的配额检查

我们在集群上运行14TB XFS文件服务器,并希望添加配额支持。 这是在CentOS 6.3(Final)下运行3.9.2-1.el6.elrepo.x86_64内核。 问题是当我们卸载XFS RAID时,重新挂载它,添加配额支持,挂载命令挂起。 Sever IS响应并且XFS挂载点不可访问。 恢复/ etc / fstab中的更改以删除配额选项不会挂载挂起。 我怀疑重新挂载时,XFS正在对14TB RAID进行配额检查。 我的问题是: 我如何禁用初始配额检查,以便它可以正确安装,并在后台运行配额检查? /etc/fstab条目: /dev/sdb /w1 xfs defaults,noatime,usrquota,grpquota 1 2 /var/log/messages输出: Jun 6 11:37:43 nas-2-1 kernel: XFS (sdb): Mounting Filesystem Jun 6 11:37:43 nas-2-1 kernel: XFS (sdb): Ending clean mount Jun 6 11:37:43 nas-2-1 kernel: XFS (sdb): Quotacheck needed: Please wait. 我不介意高CPU使用率或性能下降,而挂载点是积极的,但让它不可用不是我们要坚持的选项。 […]

当内存占用过多时自动挂起/hibernate进程

我正在使用16GB内存的8核PC上运行一个小型的Debian计算集群。 我正在运行大约1k个任务的批次(每个批次总共有一个月的预计完成时间)。 一个任务是单线程的(所以我可以在每台PC上并行运行多个),不会消耗太多的IO(在启动时加载几兆字节的数据,在退出时转储数兆字节的数据;不与外部通信否则),其运行时间是未知的(从几分钟到几周),其内存消耗是未知的(从几兆字节到8GB;使用可能增长缓慢或快速)。 我想尽可能在​​单台PC上同时完成多项任务,但是我想避免过多的交换。 所以我有一个想法:我可以监视这些任务的内存使用情况,并暂停( kill -SIGSTOP )或hibernate(使用类似CryoPID的工具)任务,这些任务会消耗太多的内存以便稍后重新启动。 内存使用量是指“活动虚拟页面”的数量,或者实际上已经被触摸的已分配但不是共享的内存页面的数量(这些任务可以在不使用它们的情况下分配内存)。 我开始寻找一些工具来做到这一点。 我知道我可以在限制内存的cgroup中限制或运行任务,但是如果我正确理解这些任务,这些解决scheme将会终止进程,而不是暂停进程。 我想避免杀死他们,因为我需要从头开始,这意味着浪费时间。 而且,他们实际上不能测量活动虚拟页面的数量。 我可以使用真正的虚拟机,但是在这种情况下它们似乎具有相当大的开销 – 具有单独的内核,内存分配等会减less可用内存; 我必须运行其中的8个。 而且,据我所知,他们也会增加计算开销。 我想象一个实现这种行为的工具会把一些函数连接到一个页面错误通知,它会决定每个页面错误是否是暂停过程的时间。 但我不知道任何可以这样工作的工具。 还有其他的select吗?

Linux的ARP高速caching超时值

我试图为Linux内核arpcaching超时configuration理智的值,但我找不到详细的解释,他们如何在任何地方工作。 即使是kernel.org文档也没有给出很好的解释,我只能find推荐的值来缓解溢出。 这里是我有的价值的一个例子: net.ipv4.neigh.default.gc_thresh1 = 128 net.ipv4.neigh.default.gc_thresh2 = 512 net.ipv4.neigh.default.gc_thresh3 = 1024 现在,从我迄今为止所收集到的信息来看: gc_thresh1是垃圾收集器开始删除任何条目之前允许的arp条目的数量。 gc_thresh2是软限制,它是垃圾收集器主动删除arp条目之前允许的条目数。 gc_thresh3是硬限制,在这个数字以上的条目被积极地删除。 现在,如果我理解正确,如果arp条目的数量超出了gc_thresh1,但仍然低于gc_thresh2,那么将以gc_interval设置的时间间隔周期性地删除多余的数据。 我的问题是,如果条目数量超出gc_thresh2但低于gc_thresh3,或者数字超出gc_thresh3,条目是如何去除的? 换句话说,“积极”和“积极”去掉的意思究竟是什么意思呢? 我认为这意味着它们比gc_interval中定义的更频繁地被移除,但我找不到多less。

使用单个端口的多个反向SSH隧道

我能够在一台服务器上使用一个端口接收来自多个远程系统的反向SSH连接: Remote A: ssh -fN -R5000:localhost:22 user@server-ip -p22 Remote B: ssh -fN -R5001:localhost:22 user@server-ip -p22 Remote C: ssh -fN -R5002:localhost:22 user@server-ip -p22 我可以根据需要从本地客户端访问这些系统: Access Remote A: ssh root@server-ip -p5000 Access Remote B: ssh root@server-ip -p5001 这需要转发服务器上每个远程系统的一个端口。 当100多个遥控器连接时,除了在服务器防火墙中打开100多个端口以外,还有其他的select,并将每个远程端口静态分配给上述端口? 我的目标是使多个遥控器按需创build隧道,在那里我可以查询谁连接。 我发现sslh是一个多路复用器,可以区分基于协议的单个端口上的stream量,但这只适用于不同的协议,例如。 SSL / SSH。 有一个解决scheme,允许单个端口上的多个隧道? 例: Remote A: ssh -fN -R5000:localhost:22 user@server-ip -p22 -identifier abc123 Remote B: […]

strace显示很长时间从MySQL套接字读取 – MySQL需要很长时间来执行查询?

我的Apache服务器需要很长时间来处理请求。 我附上strace它可以看到下面两个延迟: 1)非常关键(143秒处理) 1335 0.000037 write(16, "\235\0\0\0\3INSERT INTO `br_anonymous_user_tokens` (`dtExpires`, `nmToken`, `dtCreated`) VALUES ('2014-08-25', '46e35dc39a41e836b806f48d21621b066ea182a9', '2014-06-25')", 161) = 161 1335 0.000111 read(16, "\t\0\0\1\0\1\374\262\n\2\0\0\0", 16384) = 13 1335 143.588134 gettimeofday({1403675497, 653337}, NULL) = 0 文件描述符#16似乎是mysql套接字: line from strace 1335 0.000328 socket(PF_LOCAL, SOCK_STREAM, 0) = 16 和这里 pidof mysqld 15393 lsof -p 15393 mysqld 15393 mysql 12u […]

删除文件需要很长时间

简短版本 : rm -rf mydir , mydir (recursion地)包含250万个文件,在大部分空闲的机器上需要大约12个小时。 更多信息 :大多数被删除的文件是硬链接到其他目录中的文件(被删除的目录实际上是由rsnapshot的最旧的备份; rm命令实际上是由rsnapshot )。 所以大多数目录条目被删除 – 文件内容本身并不多; 它在几十GB的顺序。 btrfs是罪魁祸首,我很不确定。 我记得在我开始使用btrfs之前备份也很慢,但我不确定缓慢是在删除。 该机是英特尔酷睿i5 2.67 GHz的4 GB的RAM。 它有两个SATA磁盘:一个有操作系统和其他东西,备份磁盘是一个1 TB的WDC WD1002FAEX-00Z3A0 。 主板是华硕P7P55D。 编辑 :该机是Debian wheezy用Linux 3.16.3-2~bpo70+1 。 这就是文件系统的安装方式: root@thames:~# mount|grep rsnapshot /dev/sdb1 on /var/backups/rsnapshot type btrfs (rw,relatime,compress=zlib,space_cache) 编辑 :使用rsync -a –delete /some/empty/dir mydir大约需要6个小时。 与rm -rf相比有了明显的改进,但我认为还是太多了。 ( 说明为什么rsync比rm快 :“ost文件系统以btree格式存储它们的目录结构,删除文件的顺序[in]是重要的,当你执行的时候,需要避免重新平衡btree取消链接…. rsync -a […]

iptables:hashlimit与最近的源IP限速

我想在iptables中执行每个源IP的速率限制。 例如,将主机可以build立新的SSH连接的速率限制为每分钟5个。 据我所知有两种方法可以做到这一点: 使用哈希限制模块 iptables -A INPUT -p tcp –dport 22 -m state –state NEW \ -m hashlimit –hashlimit-name SSH –hashlimit-above 5/min \ –hashlimit-mode srcip -j REJECT iptables -A INPUT -p tcp –dport 22 -m state –state NEW -j ACCEPT 随着最近的模块 iptables -A INPUT -p tcp –dport 22 -m state –state NEW -m recent \ […]

如何在Linux操作系统上自动从networkingstream量中提取X.509证书

如果有人能指点我,我将不胜感激如何在Linux操作系统的客户端和服务器之间的握手阶段自动从实时networkingstream量中提取X.509证书。 一段时间后,一个类似的问题被问到安静从networking或pcap文件提取SSL证书,但答案是不完整的。 答案说使用下面的命令 ssldump -Nr file.pcap | awk 'BEGIN {c=0;} { if ($0 ~ /^[ ]+Certificate$/) {c=1; print "========================================";} if ($0 !~ /^ +/ ) {c=0;} if (c==1) print $0; }' 但是由于pcap文件的参与,给出了手动提取证书的方法。 任何人都可以帮助修改上面的命令,以适应我的要求,或build议任何其他替代方法做同样的。

红帽卫星与Ubuntu景观

我们在有120台服务器的环境中使用红帽卫星有一些经验。 现在我们正在考虑为了进一步的增长而并行部署Ubuntu。 景观与卫星相比,在function和可用性方面如何?