Linux½ø³Ì¹ÜÀíÖ®CFSµ÷¶ÈÆ÷·ÖÎö
------------------------------------------
±¾ÎÄϵ±¾Õ¾Ô´´,»¶ÓתÔØ!
תÔØÇë×¢Ã÷³ö´¦:http://ericxiao.cublog.cn/
------------------------------------------
Ò»:Ç°ÑÔ
CFSµ÷¶ÈÔÚ2.6.23°æ±¾µÄkernelÖб»¼ÓÈë.ÒýÓÃIngo
MolnarµÄÒ»¾ä»°:80%µÄÉè¼Æ¿ÉÒÔÓÃÒ»¾ä»°À´¸ÅÀ¨:CFSÖÐÒ»¸ö”ÀíÏëµÄ¶àÈÎÎñ´¦ÀíÆ÷”.Ò²´Ó¸Ã°æ±¾¿ªÊ¼,linuxµÄµ÷¶È²¿·Ý²ÉÓÃÄ£¿é»¯Éè¼Æ.ÎÒ
ÃÇÔÚ½ÓÏÂÀ´µÄ·ÖÎöÖÐ,·ÖΪ¼¸¸öÖØÒªµÄ״̬½øÐзÖÎö.±¾ÎĵĴúÂë·ÖÎö»ùÓÚ2.6.28µÄkernel.·ÖÎö´úÂë»ù±¾Î»ÓÚlinux-2.6.28-
rc7/kernel/sched.cºÍlinux-2.6.28-rc7/kernel/sched_fair.cλÖÃ.
¶þ:CFS·ÖÎö
ÔÚÉÏÃæ˵¹ý,linuxµ÷¶È´úÂë²ÉÓÃÁËÄ£¿é»¯Éè¼Æ,ʲô½ÐÄ£¿é»¯?¼ò¶øÑÔÖ®,¾ÍÊÇÒÔºóÈç¹ûÒª¸ü¸Äµ÷¶ÈÆ÷,²»ÐèÒª¸ü¸Äµ÷¶ÈÖ´Ðв¿·ÝµÄ´úÂë,Ö»ÐèÒªÌî³ä¶ÔÓ¦¼¸¸öº¯Êý¼´¿É.ÏÂÃæ·ÖΪ¼¸¸ö״̬½øÐзÖÎö.
2.1: tickÖжÏ
ÔÚtickÖжϴ¦Àíº¯ÊýÖÐ,»áµ÷ÓÃscheduler_tick()º¯Êý.¸Ãº¯Êý´úÂëÈçÏÂ:
void scheduler_tick(void)
{
/*È¡µÃµ±Ç°CPU*/
int cpu = smp_processor_id();
/*È¡µÃµ±Ç°CPU¶ÔÓ¦µÄrunqueue*/
struct rq *rq = cpu_rq(cpu);
/*µ±Ç°ÔËÐеĽø³Ì*/
struct task_struct *curr = rq->curr;
sched_clock_tick();
spin_lock(&rq->lock);
/*¸üÐÂrqµÄµ±Ç°Ê±¼ä´Á.¼´Ê¹rq->clock±äΪµ±Ç°Ê±¼ä´Á*/
update_rq_clock(rq);
/*¸üÐÂrqµÄ¸ºÔØ*/
update_cpu_load(rq);
/*µ÷Óõ÷¶ÈÄ£¿éµÄtask_tickº¯Êý*/
curr->sched_class->task_tick(rq, curr, 0);
spin_unlock(&rq->lock);
#ifdef CONFIG_SMP
rq->idle_at_tick = idle_cpu(cpu);
trigger_load_balance(rq, cpu);
#endif
}
ÎÒÃÇ´ÓÉÏÃæµÄ´úÂëÖпÉÒÔ¿´µ½,¾¹ýÒ»²¿·Ý¹²Í¬´¦ÀíÖ®ºó,Á÷³Ì»áתÈëµ÷¶ÈÄ£¿éµÄtask_tick()º¯Êý.
¶ÔÓ¦CFS,ËüµÄsched_class½á¹¹ÈçÏÂ:
static const struct sched_class fair_sched_class = {
.next = &idle_sched_class,
.enqueue_task
Ïà¹ØÎĵµ£º
Ô¶³Ìµ÷ÊÔ»·¾³ÓÉËÞÖ÷»úGDBºÍÄ¿±ê»úµ÷ÊÔstub¹²Í¬¹¹³É£¬Á½Õßͨ¹ý´®¿Ú»òTCPÁ¬½Ó£¬Ê¹ÓÃGDB±ê×¼³Ì´®ÐÐÐÒéÐͬ¹¤×÷£¬ÊµÏÖ¶ÔÄ¿±ê»úÉϵÄϵͳÄں˺ÍÉϲãÓ¦Óõļà¿ØºÍµ÷ÊÔ¹¦ÄÜ£¬µ÷ÊÔstubÊÇǶÈëʽϵͳÖеÄÒ»¶Î´úÂ룬×÷ΪËÞÖ÷»úGDBºÍÄ¿±ê»úµ÷ÊÔ³ÌÐò¼äµÄÒ»¸öý½é¶ø´æÔÚ¡£
¡¡¡¡¾ÍÄ¿Ç°¶øÑÔ£¬Ç¶ÈëʽLinuxϵ ......
Linux VNCÔ¶³Ì×ÀÃæ
2009-07-27 09:46
VNC£¬È«³ÆΪVirtual Network Computing£¬ÊÇÒ»¸ö×ÀÃæ¹²Ïíϵͳ¡£ËüµÄ¹¦ÄÜ£¬ÀàËÆÓÚwindowsÖеÄÔ¶³Ì ×ÀÃ湦ÄÜ¡£VNCʹÓÃÁËRFB(Remote FrameBuffer£¬Ô¶³ÌÖ¡»º³å£©ÐÒéÀ´ÊµÏÖÔ¶³Ì¿ØÖÆÁíÍâһ̨¼ÆËã»ú¡£Ëü°Ñ¼üÅÌ¡¢Êó±ê¶¯×÷·¢Ë͵½Ô¶³Ì¼ÆËã»ú£¬²¢°ÑÔ¶³Ì¼ÆËã»úµÄÆÁÄ»·¢»Øµ½±¾µØ£¬ VNC Viewer¿ÉÒÔº ......
linuxÏ°²×°Îļþ
2009Äê02ÔÂ20ÈÕ ÐÇÆÚÎå 16:18
1¡¢Ô´´úÂë°üµÄ°²×°
gzip -d apache_1.3.20.tar.gz £¨½âѹ£©
tar xvf apache_1.3.20.tar £¨½â°ü£©
cd apache_1.3.20
./configure £¨ÅäÖã© ----./configure --help£¨²é¿´configureÑ¡Ï
make £¨±àÒ룩
make install £¨°²×°£©
make clean £¨Ð¶ÔØ£©
×¢£ºµäÐ͵ÄÔ´´úÂë ......
/**********************************
APACHE
***********************************/
±à¼²ÎÊý£º
./configure" \
"--prefix=/usr/local/apache" \
"--enable-so" \
"--enable-ssl" \
"--enable-mods-shared=most" \
"--with-mpm=event" \
"--with-ssl=/usr/local/openssl" \
"--enable-cache" \
"--enable-mem- ......
linuxÖÐÓÃshell»ñÈ¡×òÌì¡¢Ã÷Ìì»ò¶àÌìÇ°µÄÈÕÆÚ:
ÔÚLinuxÖжÔman date -d ²ÎÊý˵µÄ±È½ÏÄ£ºý,ÒÔϾÙÀý½øÒ»²½ËµÃ÷:
# -d, --date=STRING display time described by STRING, not `now’
[root@Gman root]# date -d next-day +%Y%m%d #Ã÷ÌìÈÕÆÚ
20091024
[root@Gman root]# date -d last-day +%Y%m%d #×òÌìÈÕÆÚ
20091 ......