mongodb的NUMA问题
mongodb日志显示如下: WARNING: You are running on a NUMA machine. We suggest launching mongod like this to avoid performance problems: numactl –interleave=all mongod [other options] 解决方案: 1.在原启动命令前面加numactl –interleave=all 如# numactl –interleave=all ${MONGODB_HOME}/bin/mongod –config conf/mongodb.conf 2.修改内核参数 echo 0 > /proc/sys/vm/zone_reclaim_mode http://www.mongodb.org/display/DOCS/NUMA 下面注释转自网络 一、NUMA和SMP NUMA和SMP是两种CPU相关的硬件架构。在SMP架构里面,所有的CPU争用一个总线来访问所有内存,优点是资源共享,而缺点是总线争用激烈。随着PC服务器上的CPU数量变多(不仅仅是CPU核数),总线争用的弊端慢慢越来越明显,于是Intel在Nehalem CPU上推出了NUMA架构,而AMD也推出了基于相同架构的Opteron CPU。 NUMA最大的特点是引入了node和distance的概念。对于CPU和内存这两种最宝贵的硬件资源,NUMA用近乎严格的方式划分了所属的资源组(node),而每个资源组内的CPU和内存是几乎相等。资源组的数量取决于物理CPU的个数(现有的PC server大多数有两个物理CPU,每个CPU有4个核);distance这个概念是用来定义各个node之间调用资源的开销,为资源调度优化算法提供数据支持。 二、NUMA相关的策略 1、每个进程(或线程)都会从父进程继承NUMA策略,并分配有一个优先node。如果NUMA策略允许的话,进程可以调用其他node上的资源。 2、NUMA的CPU分配策略有cpunodebind、physcpubind。cpunodebind规定进程运行在某几个node之上,而physcpubind可以更加精细地规定运行在哪些核上。 3、NUMA的内存分配策略有localalloc、preferred、membind、interleave。localalloc规定进程从当前node上请求分配内存;而preferred比较宽松地指定了一个推荐的node来获取内存,如果被推荐的node上没有足够内存,进程可以尝试别的node。membind可以指定若干个node,进程只能从这些指定的node上请求分配内存。interleave规定进程从指定的若干个node上以RR算法交织地请求分配内存。 三、NUMA和swap的关系 可能大家已经发现了,NUMA的内存分配策略对于进程(或线程)之间来说,并不是公平的。在现有的Redhat Linux中,localalloc是默认的NUMA内存分配策略,这个配置选项导致资源独占程序很容易将某个node的内存用尽。而当某个node的内存耗尽时,Linux又刚好将这个node分配给了某个需要消耗大量内存的进程(或线程),swap就妥妥地产生了。尽管此时还有很多page cache可以释放,甚至还有很多的free内存。 四、解决swap问题 […]
误删 libc.so.6的解决方法
今天不小心把libc.so.6给删除了。 原系统是这样的: libc.so.6 -> lib-2.6.1.so 本想新建立一个软链接,指向 lib-2.8.so 没想到 ln 命令不能用了。 原来linux 很多shell命令都离不开 libc.so.6。 真惨了。 幸好没有关linux. 从网上一查, 找到解决方案: 进入 /lib (或 /lib64 视情况而定), #LD_PRELOAD=/lib/libc-x.x.x.so && ln -s /lib/libc-x.x.x.so libc.so.6 x.x.x表示系统libc的版本 就可以了 一定要记住自己系统使用的libc版本。
resin-pro-4.0.41 crack 破解文件下载
resin-pro-4.0.41 crack 破解文件下载 resin-pro-4.0.41 破解文件下载pro.jar resin pro 4.0.41 Full Cracked download. 下载pro.jar文件,覆盖原来lib目录的pro.jar文件即可。 仅供学习使用,请在下载后24时间内删除。
resin-pro-4.0.40 crack 破解文件下载
resin-pro-4.0.40 crack 破解文件下载 resin-pro-4.0.40 破解文件下载pro.jar resin pro 4.0.40 Full Cracked download. 下载pro.jar文件,覆盖原来lib目录的pro.jar文件即可。 仅供学习使用,请在下载后24时间内删除。
How-To: Install Google’s Android Eclipse Plugin (And/or Adb) on 64-bit Debian/Ubuntu
Today I had to reinstall the Android plugin on my system and I recently upgraded to a 64-bit development VM. To my surprise the installation didn’t go smoothly at all. After restarting Eclipse twice I was constantly presented with two error messages “Failed to parse the output of ‘adb version’” and “adb: error while loading […]
use ssh to run shell script on a remote machine
Also, don’t forget to escape variables if you want to pick them up from the destination host. This has caught me out in the past. For example: user@host> ssh user2@host2 “echo \$HOME” prints out /home/user2 while user@host> ssh user2@host2 “echo $HOME” prints out /home/user Another example: user@host> ssh user2@host2 “echo hello world | awk ‘{print […]
resin-pro-4.0.39 crack 破解文件下载
resin-pro-4.0.39 crack 破解文件下载 resin-pro-4.0.39 破解文件下载pro.jar resin pro 4.0.39 Full Cracked download. 下载pro.jar文件,覆盖原来lib目录的pro.jar文件即可。 仅供学习使用,请在下载后24时间内删除。
resin-pro-4.0.38 crack 破解文件下载
resin-pro-4.0.38 crack 破解文件下载 resin-pro-4.0.38 破解文件下载pro.jar resin pro 4.0.38 Full Cracked download. 下载pro.jar文件,覆盖原来lib目录的pro.jar文件即可。 仅供学习使用,请在下载后24时间内删除。
resin-pro-4.0.37 crack 破解文件下载
resin-pro-4.0.37 crack 破解文件下载 resin-pro-4.0.37 破解文件下载pro.jar resin pro 4.0.37 Full Cracked download. 下载pro.jar文件,覆盖原来lib目录的pro.jar文件即可。 仅供学习使用,请在下载后24时间内删除。
Node.js V0.12新特性之给子进程的同步API
尽管发明Node.js的初衷主要是为了编写Web服务器,但开发人员又发现了其他适用(和不适用!)Node的用途。令人觉得惊喜的是,这些用途中有一个是编写shell脚本。并且那确实有意义:Node的跨平台支持已经相当好了,既然前端和后端都用JavaScript写了,如果构建系统也用JavaScript写不是更好吗,对吧? 异步对shell脚本的坏处 在这一用途上值得称道的库是Grunt,它是构建在ShellJS之上的。然而ShellJS有一块硬骨头要啃:Node迫使它用异步I/O。尽管对于Web服务器来说异步I/O很棒,因为它必须随时做出响应,但对于需要逐步执行的shell脚本来说,异步I/O意义不大。 所以,ShellJS的作者们发现了一个“有趣的”解决办法,让它可以运行一个shell命令,然后等着命令完成。大致上是下面这样的代码: var child_process = require(‘child_process’); var fs = require(‘fs’); function execSync(command) { // 在子shell中运行命令 child_process.exec(command + ‘ 2>&1 1>output && echo done! > done’); // 阻塞事件循环,知道命令执行完 while (!fs.existsSync(‘done’)) { // 什么都不做 } // 读取输出 var output = fs.readFileSync(‘output’); // 删除临时文件。 fs.unlinkSync(‘output’); fs.unlinkSync(‘done’); return output; } 换句话说,在shell执行你的命令时,ShellJS依然在运行,并持续不断地轮询着文件系统,检查是否能找到表明命令已经完成的那个文件。有点儿像驴子。 这种效率低下又丑陋不堪的解决办法让Node核心团队受刺激了,实现了一个真正的解决方案 – Node v0.12最终应该会支持同步运行子进程。实际上这个特性已经在路线图上放了很长时间了– 我记得是在2011年的JSConf.eu上(!) ,跟现在已经退休的Node维护者Felix […]