LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1018|回复: 9

改变X运行的优先权

[复制链接]
发表于 2004-4-17 09:56:30 | 显示全部楼层 |阅读模式
以前用RH,现在觉得用SLACKWARE爽一点,不过我总觉得SLACK 上面的WINDOWS  MANAGER 有点延迟,就是说画面好像玩大型的游戏时,系统有点慢的样子,这是什么原因呢?在RH上可没有这种感觉啊。
发表于 2004-4-17 11:18:44 | 显示全部楼层
nautilous?是有点耗费资源,不过也很快的哦,可以用xfm,才耗2兆内存,只是有点不爽:)
 楼主| 发表于 2004-4-17 22:39:41 | 显示全部楼层
dreamawake兄,好像不关nautilus的事吧,我用fvwm也有这种现象,不过没有在gnome上那么严重。
发表于 2004-4-19 12:46:58 | 显示全部楼层

Re:

这个问题我想应该是slackware 默认的X 优先权比较低,导致对于鼠标和键盘的响应不够及时。可以用重新设定:
renice -10 (X PID)
(X PID) 是你的X 的进程id, ps -aux|grep X 可以查。
 楼主| 发表于 2004-4-19 17:33:18 | 显示全部楼层
ps -aux|grep X后显示如下:

root      1321  0.0  0.4  5348 1200 tty1     S    17:25   0:00 /bin/sh /usr/X11R6/bin/startx
root      1333  8.6  8.0 56832 20472 ?       S<   17:25   0:29 X :0
root      1418  0.0  0.2  4740  708 pts/0    S    17:31   0:00 grep X
请教reinf兄,上面的的结果是问题所在吗?我应该怎样去调呢?
发表于 2004-4-19 17:36:59 | 显示全部楼层
不像优先权问题
发表于 2004-4-20 09:09:26 | 显示全部楼层
> root 1321 0.0 0.4 5348 1200 tty1 S 17:25 0:00 /bin/sh /usr/X11R6/bin/startx
> root 1333 8.6 8.0 56832 20472 ? S< 17:25 0:29 X :0
> root 1418 0.0 0.2 4740 708 pts/0 S 17:31 0:00 grep X

第二行的那个1333是X的进程号,就用:
renice -10 1333

当然每次启动那个号码会变动的。至于究竟能不能解决问题,我不敢保证,X缓慢的原因很多,只是在我的slack上还有不错的效果。
 楼主| 发表于 2004-4-20 14:00:36 | 显示全部楼层
非常感谢reinf兄,照你的方法做了,感觉果然好很多!
为什么以前的SLACKER没有提这个问题呢?
是不是每次开机都要调,或者有没有更好的办法?
发表于 2004-4-20 15:02:03 | 显示全部楼层
这个问题,可以加一个X server的外层,让他启动X的时候自动设定优先权。
代码摘自gentoo论坛,仅在我的机器上测试过。
首先,创建一个新的名为wrapper.c的文件,内容如下:
[PHP]
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>

const char *app = "/usr/X11R6/bin/XFree86";   // the actual binary
const int root = 0;   // root's uid
const int n = -10;    // desired nice priority valid range -20..20.

int main(int argc, char **argv)
{
  seteuid(root);    // The X server must be started as root under any Linux
  nice(n);          // Makes it nice
  execv(app, argv); // This is it!
  /* Should never see this unless *app points to invalid binary */
  fprintf(stderr, "Failed to execv %s with nice value of %d\n", app, n);
  exit(1);
}
[/PHP]
然后编译(井号是提示符,勿输入):
# gcc wrapper.c -o XFree86.wrapper

将刚才写的那个wrapper替代原来的X:
[PHP]
# su root
# cp XFree86.wrapper /usr/X11R6/bin
# cd /usr/X11R6/bin
# rm X
# chown root XFree86.wrapper
# chmod u+s XFree86.wrapper
# ln -s XFree86.wrapper X
[/PHP]
最后退出X, 再重新进入。
 楼主| 发表于 2004-4-20 15:21:16 | 显示全部楼层
再一次感谢reinf兄
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表