Linux双核cpu转为单核运行 echo 0 > /sys/devices/system/cpu/cpu1/online
若你机器是双核的cpu,上面命令使你的第二个内核停止运行。
这样/sys/devices/system/cpu/cpu1/下的所有关于第二个内核的文件消失。
单核运行,cpu很容易就飙到100的,只需移动一下窗口。不知道省电否。
echo 1 > /sys/devices/system/cpu/cpu1/online
恢复双核运行
cat /sys/devices/system/cpu/online 可以显示你的当前工作的cpu数。
echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
可以设置你的cpu为省电模式
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
可用的模式
[root@shine cpufreq]# ls
affected_cpus related_cpus scaling_governor
cpuinfo_cur_freq scaling_available_frequencies scaling_max_freq
cpuinfo_max_freq scaling_available_governors scaling_min_freq
cpuinfo_min_freq scaling_cur_freq scaling_setspeed
cpuinfo_transition_latency scaling_driver stats
网上看到的脚本不知道是否管用
#!/bin/bash
# author: fcicq
# requirement:
# acpi,cpufreq
# a Dual Core CPU (like Intel core 2)
chkavg() {
thisloadavg=`cat /proc/loadavg | awk -F . '{print $1}'`
if [ $thisloadavg -ge 2 ]; then
# >2
if [ `cat /sys/devices/system/cpu/cpu1/online` -eq 0 ]; then
echo 1 > /sys/devices/system/cpu/cpu1/online
fi
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
cat /sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_max_freq > /sys/devices/system/cpu/cpu1/cpufreq/scaling_setspeed
elif [ $thisloadavg -ge 1 ]; then
# 1-2
if [ `cat /sys/devices/system/cpu/cpu1/online` -eq 1 ]; then
echo 0 > /sys/devices/system/cpu/cpu1/online
fi
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
else
# 0-1
if [ `cat /sys/devices/system/cpu/cpu1/online` -eq 1 ]; then
echo 0 > /sys/devices/system/cpu/cpu1/online
fi
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
fi
}
while true; do
chkavg
sleep 60
done
From: http://hi.baidu.com/black/item/4078cda5879bc6d85af19140
2013eoe移动开发者大会9月14号于国家会议中心盛大召开并圆满结束,超过2000个开发者齐聚一堂,活动现场座无虚席,气氛异常火爆,大会以开发者、技术本质为核心,通过引导开发者通过技术改变世界,通过技术改变并回顾本真状态。
2013eoe移动开发者大会 主会场
PingWest的创始人骆轶航担任本次大会的主会场的主持人,并提到目前大家过于强调趋势、强调模式、强调运营、强调颠覆,而比较少的注意到真正的架构、技术、产品设计和渐进式创新的改变,希望大家多多关注后者,并逐步通过技术改变世界。
eoe大会主持 PingWest的创始人骆轶航
eoe联合创始人&CEO靳岩为参会者作开幕致词"技术改变世界的力量",讲述自身的学习、创业历程,从码农到工程师到极客的转变。靳岩的理解极客精神主要有四点:成为某个领域的专家、不断是给自己设置挑战并且努力去完美超越、总是寻求更好的解决问题的方式、热爱分享,并建议开发者从工作环境、使用好的工具工具、不要重复自己、保持好奇心、多读书,多旅游、打造极客关系圈等方式更好的从码农往极客的道路上前行。
eoe开发者社区创始人 靳岩
微软DPE团队李婷与大家一起分享“云+端”,她认为通过一套完整的架构服务来帮助开发者不仅要通过云,而且要通过端,那就是一个云和端结合的新世界如何帮助开发者便捷开发、提升效率。预计2020年全球的设备应该是达到500亿的量,每人手中会有10台电子设备,意味着我们很多的服务都可以通过这个设备在软件中展现,设备在两个场景上的互联互通更强调的是体验的一致性。他提到通过云存储实现信息共享、统一用户资源管理、信息传递、与云计算深度结合把自己的思路开的更大,做新的尝试和创新,用技术改变世界。
小米开源硬件负责人史颉华与大家分享小米对开源硬件的支持,史颉华提到开源硬件并不是不赚钱的,而是通过开源硬件能够获得自己的收益,大量的创业者在开源硬件领域努力的工作,共同打造互利共生的环境,开源硬件是可预见的一条逐渐走向成功的路,开源创新将是21世纪继续主导制造业的必经之路。
百度移动云事业部王继平分享关于百度如何通过背后的一套云架构使开发者受益,王继平认为移动时代的标志性的产物是个人数字化生活时代的来临,而开发者是这个时代的受益者,百度云平台一直致力让开发者共同建设一个繁荣的移动互联网时代,提出Light App会成为移动互联网研发的新趋势、开发模式可能会变得以服务为中心、云服务将会变得更轻甚至无感知等三点展望,最终移动互联网时代开发者会是主角。
百度移动云事业部王继平
华为推送首席架构师李平为大家分享移动智能终端Push系统设计,李平提出想达到真正好的效果反而面临很多的挑战。挑战包括终端、网络、云端这三个环节的挑战。终端方面体现在功耗、流量和后台进程,3G时代挑战是最大的是网络,云端的关键点就是百万连接,建设一个Push本身比较简单,但在专注的领域能把这个做到极致需要的成本是非常高的。
ARM市场总监Leo Zou为大家讲解ARM和开发者之间的关系,ARM提供平台化技术,产品、技术被应用在每位消费者当中,在改变着世界,着重介绍ARM提供资源的项目NEON,通过它实现更好、更高性能的应用,好的工具可以最大程度去优雅的解决问题成为一名极客。
eoe成立于2009年,创办了最早也是目前为止最大的中文移动开发者社区:www.eoe.cn ,超过160万的移动开发者汇聚在eoe,共同讨论最前沿最精彩的技术话题。eoe一直致力于为移动开发者提供全方位的服务。
更多内容请关注eoe移动开发者社区:http://www.eoeandroid.com/
var fileSystem = null;
//等待加载PhonrGap
document.addEventListener("deviceready", onDeviceReady, true);
function onDeviceReady() {
//request the persistent file system
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFSSuccess, onError);
}
//加载phoneGap成功
function onFSSuccess(fs) {//alert("aaa="+ fs);
fileSystem = fs;
}
function onError(e) {
alert(e);
//getById("#content").innerHTML = "<h2>Error</h2>"+e.toString();
}
//areater缓存存储值 防止同时调写文件多次,只有最后的写成功(javascript异步)
var areater = new Array();
var count1 = 0;
//创建文件写文件
function save2File(fileName, key, value, keyValueSplit, recodeSplit) {
//alert(6)
write2File(fileName, key, value, keyValueSplit, recodeSplit, "setSaveSuccess");
}
//创建文件写文件
function write2File(fileName, key, value, keyValueSplit, recodeSplit, responseFun) {//responseFun函数名显示结果
//alert(5)
var saveSuccess = true;
var path_1 = fileName;
var keyValueSplit_1 = keyValueSplit;
var recodeSplit_1 = recodeSplit;
var file_ = "";
var parameter = key + keyValueSplit + value;
areater[count1++] = parameter;
doReadFile();
//文件存在读取文件如果不存在创建文件
function doReadFile() {
//alert(9)
fileSystem.root.getFile(path_1, {
create: true
}, function(f) {
reader = new FileReader();
reader.onloadend = function(e) {
console.log("go to end");
//file_读取到的内容
file_ = e.target.result;
alert(e.target.result)
//logit("<pre>" + e.target.result + "</pre><p/>");
};
reader.readAsText(f);
}, onError);
function onError(e) {}
doAppendFile();
}
//文件不存在创建文件并写文件
function doAppendFile() {
alert("doAppendFile");
fileSystem.root.getFile(path_1, {
create: true
}, function(f) {
f.createWriter(function(writerOb) {
writerOb.onwrite = function() {
//logit("Done writing to file.<p/>");
};
var total = new Array();
total = file_.split(recodeSplit_1);
var value_a = "";
alert(areater.length);
//文件不存在第一次写
if (file_ == undefined || file_ == null || file_ == "") {
value_a = areater.join(recodeSplit_1);
} else {//文件存在
var strs = new Array();
strs = file_.split(recodeSplit_1);
var map = getMap();
for (i = 0; i < strs.length; i++) {
var str = strs[i];
//alert(strs[i])
var key = str.substr(0, str.indexOf(keyValueSplit_1)) + "";
var value = str.substr(str.indexOf(keyValueSplit_1) + 1) + "";
map.put(key, value);
}
for (i = 0; i < areater.length; i++) {
var str = areater[i];
var key = str.substr(0, str.indexOf(keyValueSplit_1)) + "";
var value = str.substr(str.indexOf(keyValueSplit_1) + 1) + "";
map.put(key, value);
}
var str = map.keyset() + "";
var str2 = new Array();
str2 = str.split(",");
var str3 = new Array();
for (i = 0; i < str2.length; i++) {
str3[i] = str2[i] + keyValueSplit_1 + map.get(str2[i]); // 合并key和value
}
value_a = str3.join(recodeSplit_1);
//自定义Map
function getMap() {
var map_ = new Object();
map_.put = function(key, value) {
map_[key + '_'] = value;
};
map_.get = function(key) {
return map_[key + '_'];
};
map_.remove = function(key) {
delete map_[key + '_'];
};
map_.keyset = function() {
var ret = "";
for (var p in map_) {
if (typeof p == 'string' && p.substring(p.length - 1) == "_") {
ret += keyValueSplit_1;
ret += p.substring(0, p.length - 1);
}
}
if (ret == "") {
return ret.split(keyValueSplit_1);
} else {
return ret.substring(1).split(keyValueSplit_1);
}
};
return map_;
}
}
writerOb.write(value_a);
//写成功返回确认
var runFun = responseFun + "(" + saveSuccess + ")";
//字符串转对象
eval_r("(" + runFun + ")");
});
}, onError);
function onError(e) { alert("qqq写文件内容错误:"+e); }
}
// return write1;
}
//读文件中所有内容
function readFromFileAll(filename, keyValueSplit, recodeSplit, responseFun) {
//alert(456)
//var findValue;
var fileSystem1 = null;
var path_1 = filename;
var keyValueSplit_1 = keyValueSplit;
var recodeSplit_1 = recodeSplit;
var file_ = "";
var flag = 1;
document.addEventListener("deviceready", onDeviceReady1, true);
//alert(1)
function onDeviceReady1() {
//alert(2)
//request the persistent file system
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFSSuccess1, onError);
}
function onFSSuccess1(fs) {//alert("aaa="+ fs);
//alert(3)
fileSystem1 = fs;
doReadFile();
}
function onError(e) {
alert(e);
//getById("#content").innerHTML = "<h2>Error</h2>"+e.toString();
}
function doReadFile() {
//alert(5)
fileSystem1.root.getFile(path_1, {
create: true
}, function(f) {
// alert(6)
reader = new FileReader();
reader.onloadend = function(e) {
console.log("go to end");
file_ = e.target.result;
//alert("9998="+e.target.result)
var total = new Array();
total = file_.split(recodeSplit_1);
//var json1 = new Array();
var json1 = {};
// var i = 0;
for (j = 0; j < total.length; j++) {
//alert(1)
var str = total[j];
var s1 = str.substring(0, str.lastIndexOf(keyValueSplit_1));
var s2 = str.substring(str.lastIndexOf(keyValueSplit_1) + 1);
json1[s1] = s2;
}
//alert(json1)
var runFun = responseFun + "(" + WMW.obj2str(json1) + ")";
//alert(runFun)
eval_r("(" + runFun + ")");
};
reader.readAsText(f);
}, onError);
function onError(e) { alert("读取文件内容错误:"+e); }
}
}
//更具KEY查找文件中值
function readFromFile(filename, key, keyValueSplit, recodeSplit,responseFun) {
var path_1 = filename;
var keyValueSplit_1 = keyValueSplit;
var recodeSplit_1 = recodeSplit;
var file_ = "";
doReadFile();
function doReadFile() {
//alert(doReadFile)
fileSystem.root.getFile(path_1, {
create: true
}, function(f) {
reader = new FileReader();
reader.onloadend = function(e) {
file_ = e.target.result;
//alert("9998=" + e.target.result);
var total = new Array();
total = file_.split(recodeSplit_1);
for (j = 0; j < total.length; j++) {
var str = total[j];
//alert(9)
if (str.substring(0, str.lastIndexOf(keyValueSplit_1)) == key) {
//alert(7)
var value = str.substring(str.lastIndexOf(keyValueSplit_1) + 1);
//alert("value=" + value);
// 设置从文件中读取值
var runFun = responseFun + "(" + value + ")";
// alert(runFun)
eval_r("(" + runFun + ")");
break;
}
}
};
reader.readAsText(f);
}, onError);
function onError(e) {}
}
}
// 设置从文件中读取单个值
function setReadFileValue(val) {
var value = val;
//alert(value);
}
// 设置从文件中读取所有值
function setReadFileAll(val) {
alert(7)
alert("value="+val);
}
// 设置从文件写成功
function setSaveSuccess(val) {
//alert(val)
}
//测试
function test() {
alert("11");
onWrite3();
//readFromFile("dataFile.txt", "nnn", ",", "\r\n");
//readFromFileAll("aaa/dataFile.txt",",","\r\n","setReadFileAll");
//save2File("aa/dataFile.txt", "9999", "99999999", ",", "\r\n");
// save2File("dataFile.txt", "888888", "99999999", ",", "\r\n");
// write2File("dataFile.txt", "wwww", "oooooo", ",", "\r\n", "setReadFileAll");
//alert("aa="+aa)
}
//PhoneGap创建文件代码太过繁琐 就省去了创建文件的过程,传参时只能写文件名,不能加路径
//要想把文件保存在文件夹,就先掉一下onWrite3()创建文件夹的作用。
//说这么多意思就是要把文件写在某个文件下,前提是要有这个文件,传参时才可加路径
//刚开始学,有不足之处还望指教
//文中WMW.obj2str(json1)函数没有提供,对象转换的作用,可用字符串代替直接输出
function onWrite3() {
// alert("onWrite");
document.addEventListener("deviceready", onDeviceReady3, false);
}
function onDeviceReady3() {
//alert("onWrite3()");
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS3, fail);
}
//获取newFile目录,如果不存在则创建该目录
function gotFS3(fileSystem) {
var filePath="myfile";
//var filePath = path_1.substring(0, path_1.lastIndexOf("/"));
newFile = fileSystem.root.getDirectory(filePath, {create:true, exclusive:false}, writerFile3, fail);
}
function writerFile3(){}
function fail(){}