ºìÁªLinuxÃÅ»§
Linux°ïÖú

´ò¿ªLinuxϵÄ32λI/OºÍDMA

·¢²¼Ê±¼ä:2008-02-29 10:43:57À´Ô´:ºìÁª×÷Õß:Nesoikps
linux´ò¿ªDMA

Direct Memory Access Ö±½Ó´æ´¢Æ÷´æÈ¡
ÊÇÓÃÀ´´ÓÍⲿÉ豸ֱ½Ó´«ÊäÊý¾Ý£¬²»ÐèҪͨ¹ýcpu£¬Ê¹µÃ¼ÆËã»ú¹¤×÷ËÙ¶È¿ì.
DMAÊÇ¿ØÖÆÍâÉèµÄ Ï൱¸øÍâÉèÒ»¸ö¿ØÖÆÆ÷ ÕâÑùÔÚ´«ÊäÊý¾ÝµÄʱºò²»Í¨¹ýCPU
CPUÖ»´¦ÀíÖжϾÍÐÐÁË ¼õÇáCPU¸ºµ£
LinuxϵÄ32λI/OºÍDMAĬÈÏÊǹرյģ¬¿ÉÊÇÏÖÔÚµçÄÔµÄÓ²Å̲»»áÄÇôÂäÎé°É£¡LinuxºÃÊǺ㬵«Èç¹ûÓõÄÊÇ16λI/OµÄ»°£¬µçÄÔµÄÐÔÄܾÍÎÞ·¨µÃµ½³ä·Ö·¢»Ó£¬ÄãÐÄÀïÒ»¶¨»á¾õµÃºÜÔ©£¡Ã»¹ØÏµ£¬¸úÎÒÀ´°É¡£

¡¡¡¡Òª´ò¿ª32λI/OºÍDMA£¬ÐèÒªÒÔRootÉí·Ý½øÐÐÉèÖá£ÎªÁ˽µµÍÒò³ö´í¶øÖØÆôϵͳ¶ÔÎļþϵͳµÄË𺦣¬×îºÃÒÔµ¥Óû§Ä£Ê½½øÐС£¿ÉÒÔÏÈÓÃÏÂÃæµÄÃüÁî¼ì²éÓ²¼þÇý¶¯Æ÷µÄI/OÇé¿ö¡£

¡¡¡¡#hdparm -t /dev/hda

¡¡¡¡ÆÁÄ»ÏÔʾÈçÏ£º

¡¡¡¡/dev/hda:

¡¡¡¡Timing buffered disk reads:64MB in 30.93 seconds=2.07MB/sec

¡¡¡¡Èç¹ûÒªÏÔʾµ±Ç°I/O¡¢DMAÅäÖã¬ÃüÁî·Ö±ðÈçÏ£º

¡¡¡¡#hdparm -c /dev/had £¨×¢£ºÏÔʾI/OÅäÖÃÃüÁ

¡¡¡¡ÆÁÄ»ÏÔʾÈçÏ£º

¡¡¡¡/dev/hda:

¡¡¡¡I/O support=0(16bit)

¡¡¡¡# hdparm -d /dev/had £¨×¢£ºÏÔʾDMAÅäÖÃÃüÁ

¡¡¡¡ÆÁÄ»ÏÔʾÈçÏ£º

¡¡¡¡/dev/hda:

¡¡¡¡using_dma=0(off)

¡¡¡¡ÔÚÈ·¶¨32λI/OºÍDMAÊǹرյÄÒÔºó£¬ÓÃÏÂÃæµÄÃüÁÆä´ò¿ª£º

¡¡¡¡#hdparm -c 1 /dev/hda £¨×¢£º´ò¿ª32λI/OµÄÃüÁ

¡¡¡¡ÆÁÄ»ÏÔʾÈçÏ£º

¡¡¡¡/dev/hda:

¡¡¡¡setting 32-bit I/O support flag to 1

¡¡¡¡I/O support= 1 (default 16-bit)

¡¡¡¡#hdparm -d 1 /dev/had (×¢£º´ò¿ªDMAµÄÃüÁî)

¡¡¡¡ÆÁÄ»ÏÔʾÈçÏ£º

¡¡¡¡/dev/hda:

¡¡¡¡setting using_dma to 0(on)

¡¡¡¡hdaMA inabled

¡¡¡¡using_dma=1 (on)

¡¡¡¡È»ºóÖ´ÐÐÏÂÃæµÄÃüÁîÒÔʹÅäÖÃÉúЧ£º

¡¡¡¡#hdparm -k 1 /dev/hda

¡¡¡¡ÆÁÄ»ÏÔʾÈçÏ£º

¡¡¡¡/dev/hda:

¡¡¡¡setting keep_settings to 1(on)

¡¡¡¡keepsettings=1(on)

¡¡¡¡È»ºó£¬¿ÉÒÔÔÙÓÃÃüÁhdparm -t /dev/hda À´¿´¿´Ð§¹û£º

¡¡¡¡/dev/hda:

¡¡¡¡Timing buffered disk reads:64MB in 14.53 seconds=4.40MB/sec

¡¡¡¡ÔõôÑù£¬ÐÔÄÜÌá¸ßÁËÒ»±¶¶à£¡

¡¡¡¡ÉÏÃæµÄ·½·¨£¬¿ÉÒÔʵÏÖÔÚÒ»´Î¿ª»úÖÐÉúЧ£¬¶øÏÂÒ»´Î¿ª»úÓÖÒªÖØÐÂÉèÖá£Èç¹ûҪʵÏÖÿһ´Î¿ª»úʱ¶¼ÉúЧ£¬Ó¦¸ÃÔÚÎļþ/etc/rc.d/rc.localµÄ½áβ¼ÓÈëÒÔÏÂÃüÁhdparm -c 1 -d 1 -k 1 /dev/hda£¬Ëü¿ÉÒÔʹÉèÖÃÔÚÿ´ÎÖØÐÂÆô¶¯ÏµÍ³Ê±ÉúЧ¡£
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 0 ÌõÆÀÂÛ