¥·¥ç¥Ü¡¼¥ó(¡Ž¥¦ØŽ¥¡®)
sc420 login: SysRq : Trigger a crashdump
Memory for crash kernel (0x0 to 0x0) notwithin permissible range
PCI: BIOS Bug: MCFG area at e0000000 is not E820-reserved
PCI: Not using MMCONFIG.
ACPI: Getting cpuindex for acpiid 0x2
Mounting proc filesystem
Mounting sysfs filesys
¥Ö¡¼¥È¥Ñ¥é¥á¥¿¤Ë½ñ¤¤¤¿crashkernel=128M@16M ¥ª¥×¥·¥ç¥ó¤¬Àµ¤·¤¯Ç§¼±¤µ¤ì¤Æ¤¤¤ë¤³¤È¤Ï
/proc/iomem¤Ë¤Æ³ÎǧºÑ¤ß¤À¤·¡£
¤ª¤Ê¤¸¤¯¡¢/proc/iomem¤Ë¤Æe0000000 ¤¬reserved¤Ç¤¢¤ë¤³¤È¤Ï³Îǧ¤Ç¤¤Æ¤ë¤ó¤À¤±¤É¡¦¡¦¡¦
¤à¤à¤à¡¦¡¦¡¦
Linux¤Çµ¯Æ°»þ¤Ë¥Ñ¥Ë¥Ã¥¯¤·¤Á¤ã¤¦¾ì¹ç¥·¥ê¥¢¥ë¥±¡¼¥Ö¥ë¤Ä¤Ê¤²¤Æ¤ª¤«¤Ê¤¤¤È¥Ç¥Ð¥Ã¥°¤¬¤Û¤ÜÉÔ²Äǽ¤Ê¤Î¤À¤è¡£
¤Ç¡¢µ¢¤Ã¤Æ¤ß¤ë¤È¾×·â¤Î»ö¼Â¤¬¡ª¡ª
¤Ü¤¯¤Á¤ó¤ÎWindows¥Þ¥·¥ó¤Ë¤Ï¤Ê¤ó¤È¥·¥ê¥¢¥ë¥Ý¡¼¥È¤¬¤Ê¤«¤Ã¤¿¡£¥¤¥Þ¥É¥¤ÎWindows¤Ã¤Æ¤½¤¦¤Ê¤Î¤Í£÷£÷£÷£÷
¤·¤ç¤¦¤¬¤Ê¤¤¤«¤é¡¢¼è¤Ã¤ÆÊÖ¤·¤ÆUSB - ¥·¥ê¥¢¥ëÊÑ´¹µ¡¤âÇã¤Ã¤Æ¤¤¿¡£¥Ð¥«¥¹¡£
¤Æ¤æ¡¼¤«¡¢¤Á¤ç¤Ã¤È¤·¤¿Á±°Õ¤Ç£¶Àé±ß¤âÈô¤ó¤Ç¤¤¤¯¤Î¤Ï¼ã´³Ç¼ÆÀ¹Ô¤«¤Ê¤¤¤è¤¦¤Ê¡£¤à¤à¡£
¤Ç¡¢Linux¦¤ÎÀßÄê¤Ê¤Î¤À¤¬/boot/grub/grub.conf¤Î°Ê²¼¤Î²Õ½ê¤òÊѹ¹¤¹¤ì¤ÐOK
default=3
timeout=5
#splashimage=(hd0,0)/grub/splash.xpm.gz
serial --unit=0 --speed=9600 --word=8 --parity=no --stop=1
terminal --timeout=10 serial console
hiddenmenu
title CentOS (2.6.18-53.1.4.el5PAE)
root (hd0,0)
kernel /vmlinuz-2.6.18-53.1.4.el5PAE ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-2.6.18-53.1.4.el5PAE.img
title kosatest
root (hd0,0)
kernel /vmlinuz-kosatest ro root=/dev/VolGroup00/LogVol00 rhgb quiet console=tty0 console=ttyS0,9600n8r
initrd /initrd-kosatest.img
»²¹ÍURL
JFʸ½ñ :http://www.linux.or.jp/JF/JFdocs/Remote-Serial-Console-HOWTO/index.html
IT¥á¥Ç¥£¥¢¡§¡¡http://www.itmedia.co.jp/help/tips/linux/l0617.html
Â裳¤Î¥Ú¥ó¥®¥ó¡§¡¡http://blog.miraclelinux.com/thethird/2007/02/linux_fb95.html
USB¤ò¥·¥ê¥¢¥ë¥³¥ó¥½¡¼¥ë¤Ë¡§ http://www.irori.org/doc/usb-console.html
¤À¤ó¤À¤ó˰¤¤Æ¤¤¿¤Î¤Ç¡¢Ã¯¤«ÌÜ¿·¤·¤¤¥³¥á¥ó¥È¤¯¤ì¤ó¤«¤Î¤¥
¤à¤é¤à¤é¤¹¤ë¤Ê
http://mkosaki.blog46.fc2.com/blog-entry-241.html
¤Ç½ñ¤¤¤¿»ö¤È¤Û¤ÜƱ¤¸¤À¤±¤ì¤É¡£
Linux¤Ë¤ª¤¤¤Æ¡¢CPUÉé²Ù¤ò¬Äꤹ¤ë¥Ù¥ó¥Á¥Þ¡¼¥¯¤Ç¤Ï°Ê²¼¤Î´Ä¶ÊÑ¿ô¤òÀßÄꤹ¤ë¤È±ý¡¹¤Ë¤·¤ÆÀǽ¤¬¤¢¤¬¤ë¡£
% setenv MALLOC_TRIM_THRESHOLD_ -1
% setenv MALLOC_MMAP_MAX_ 0
MALLOC_TRIM_THRESHOLD_ ¤ÏOS¤Ë̤»ÈÍѤˤʤä¿¥á¥â¥ê¤òÊֵѤ¹¤ë·Àµ¡¤ò¤¢¤é¤ï¤·¤Æ¤¤¤Æ¡¢¡Ý£±¤Ï·è¤·¤ÆÊֵѤ·¤Ê¤¤»ö¤òɽ¤¹¡£
MALLOC_MMAP_MAX_ ¤ÏºÇÂçmmap¿ô¤Ç£°¤Ï·è¤·¤Æmmap¤»¤º¡¢¤É¤ó¤Ê¤ËÂ礤ʥá¥â¥ê¤Ç¤âbrk¤ò»È¤Ã¤Æ¥á¥â¥ê¤ò¼è¤ë»ö¤ò°ÕÌ£¤¹¤ë¡£
¤Ç¡¢Àǽ¤Ë¸ú¤¯¤Î¤Ï¡Ê¤¿¤¤¤Æ¤¤¡ËMALLOC_MMAP_MAX_¤Î¤Û¤¦¡£
glibc¤Ï¥¢¥ó¥Á¥Õ¥é¥°¥á¥ó¥Æ¡¼¥·¥ç¥ó¤Î´ÑÅÀ¤«¤é°ìÄê°Ê¾å¡Ê¤¿¤·¤«¥Ç¥Õ¥©¥ë¥È£±M¡Ë¤ÎÂ礤µ¤Îmalloc¤ÏÆâÉô¤ÇľÀÜmmap¸Æ¤Ó½Ð¤·¤ò¤¹¤ë¤è¤¦¤ËÊÑ´¹¤µ¤ì¤ë¡£
¤Ç¡¢¤³¤ì¤¬¤¢¤ë¼ï¤Î¾õ¶·²¼¤Ç¤Ï¡¢£²½Å¤Î°ÕÌ£¤Ç°¤¤¸ú²Ì¤ò¤â¤¿¤é¤¹¡£
£±¡¥¥¥ã¥Ã¥·¥å¥³¥ó¥Õ¥ê¥¯¥È
¡¡¡¡¤Þ¤¢¡¢¼ÂÁõ¤¬¤Ø¤³¤¤¤Î¤Ç¤¹¤¬mmap¸Æ¤Ó½Ð¤¹¤È¤¤Ë¥¥ã¥Ã¥·¥å¥«¥é¡¼¥ê¥ó¥°¤Î¥³¡¼¥É¤¬
¡¡¡¡¤Ï¤¤¤Ã¤Æ¤Ê¤¤¤ó¤Ç¤¹¡£
¡¡¡¡¤Ê¤Î¤Ç¡¢Ìá¤êÃÍ¥¢¥É¥ì¥¹¤¬Á´Éô¥Ú¡¼¥¸¥Ð¥¦¥ó¥À¥ê¤Ë¤½¤í¤Ã¤Æ¤·¤Þ¤Ã¤Æ¤¤¤Þ¤¹¡£
¡¡¡¡¤Ê¤Î¤ÇÊ£¿ô¥¹¥ì¥Ã¥É¤¬mallocÉüµ¢ÃͤòƱ¤¸¤è¤¦¤Ê¥¢¥¯¥»¥¹¥Ñ¥¿¡¼¥ó¤Ç¥¢¥¯¥»¥¹¤·¤Æ¤¤¤¯¤È
¡¡¡¡¤¬¤ó¤¬¤ó¥¥ã¥Ã¥·¥å¥³¥ó¥Õ¥ê¥¯¥È¤·¤Þ¤¹¡£
£²¡¥munmap¥Í¥Ã¥¯
¡¡¡¡mmap¤·¤¿¤ä¤Ä¤Ïbrk¤Ç¤È¤Ã¤¿¤ä¤Ä¤È°ã¤¤¡¢¥Õ¥ê¡¼¥ê¥¹¥È´ÉÍý¤Ï¤»¤º¤Ë¡¢¥¢¥×¥ê¤¬free(3)¤ò
¡¡¡¡¸Æ¤ó¤À¤é¡¢¤¹¤°¤µ¤ÞOS¤Ëmunmap¤¹¤ë¼ÂÁõ¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
¡¡¡¡¤Ç¡¢ÆÃ¤ËÂ絬ÌÏSMP¤Ë¤ª¤¤¤Æ¡¢munmap¤Ïmmap¤È°ã¤Ã¤Ælazy¤Ë½èÍý¤Ç¤¤Ê¤¤¤Î¤Ç¡¢
¡¡¡¡Èó¾ï¤Ë¥³¥¹¥È¤¬¹â¤¤Áàºî¤Ç¤¢¤ë¡£¤È
¡¡¡¡ÂçÄñ¤Î¥¢¡¼¥¤ÇÁ´CPU¤Ë³ä¤ê¹þ¤ß¤È¤Ð¤·¤Æ¶õ´Ö¤½¤®Íî¤È¤·¤ÆÊÖ»ö¤¬¤¯¤ë¤Î¤ò¤¸¤Ã¤È
¡¡¡¡¤Þ¤Ã¤Æ¤¤¤ë¤Î¤Ç¡£
¡¡¡¡¤«¤Ä¡¢Linux¤Ë¤ª¤¤¤Æ¥É¥é¥¤¥Ð¤¬¿ô¥ß¥êÉ䰤餤³ä¶Ø¤È¤«¤¹¤ë¤Î¤Ï¤á¤º¤é¤·¤¯¤Ê¤¤¤Î¤Ç¡¢
¡¡¡¡°ìÈÖÃÙ¤¤CPU¤Ë°ú¤ÃÄ¥¤é¤ì¤Æ¤Þ¤¹¤Þ¤¹ÃÙ¤¯¤Ê¤ë¡£
¤â¤Á¤í¤ó¡¢¤³¤Î´Ä¶ÊÑ¿ô¤òÀßÄꤹ¤ë¤È¥Ò¡¼¥×¥Õ¥é¥°¥á¥ó¥Æ¡¼¥·¥ç¥ó¤¬¿Ê¤ß¤ä¤¹¤¯¤Ê¤ë¤Î¤Ç£³£¶£µÆüư¤Â³¤±¤ë¶È̳¥¢¥×¥ê¤ÇÀßÄꤹ¤ë¤â¤Î¤Ï¹Í¤¨Êª¤Ç¤¢¤ë¤¬¡¢¥Ù¥ó¥Á¥Þ¡¼¥¯¤Î¿ô»úŪ¤Ë¤Ï·ë¹½¸ú²Ì¤¬¤¢¤ë¤Î¤Ç¡¢¥Ù¥ó¥Á¥Þ¡¼¥¯²°¤µ¤ó¤Ï¡¢¥ª¥Þ¥¸¥Ê¥¤Âå¤ï¤ê¤Ë»î¤·¤Æ¤ß¤ë²ÁÃͤϤ¢¤ë¡£

¤ª¤Þ¤¸¤Ê¤¤Âå¤ï¤ê¡ª¡¡¥é¥ó¥¥ó¥°¡ª
¡¡¡¡¡¡¤¦¤ë¤Ø¡¼¡¢¤¤¤¤¤«¤é¤ä¤Ã¤Æ¤ß¤í
¤ÈÊÖ¿®¤·¤Æ¤·¤Þ¤Ã¤¿¡£
¤â¤¦¤Á¤ç¤Ã¤È¸ÀÍÕ¸¯¤¤¤ò¹Í¤¨¤Þ¤·¤ç¤¦¡£È¿¾Ê¡£
¤ª¤«¤²¤ÇLKML¤ÇÃѤò¤«¤¤¤¿¤ï¤¤ (Çώߢώ߼¯)¢ö
¸å¤ÏÌî¤È¤Ê¤ì»³¤È¤Ê¤ì(Žß§ÕŽß¡®)
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡2.6.24-rc6¡¡¡¡+my patch¡¡¡¡¡¡ratio
¡¡¡¡¡¡¡¡¡¡-------------------------------------------------
¡¡¡¡¡¡¡¡¡¡rw_cp¡¡¡¡¡¡¡¡ ¡¡¡¡¡¡¡¡¡¡59.32¡¡¡¡¡¡¡¡¡¡¡¡58.60¡¡¡¡¡¡¡¡¡¡98.79%
¡¡¡¡¡¡¡¡¡¡rw_fadv_cp¡¡¡¡ ¡¡¡¡¡¡¡¡57.96¡¡¡¡¡¡¡¡¡¡¡¡57.96¡¡¡¡¡¡¡¡¡¡100.0%
¡¡¡¡¡¡¡¡¡¡mm_sync_cp¡¡¡¡¡¡¡¡¡¡ 69.97¡¡¡¡¡¡¡¡¡¡¡¡61.68¡¡¡¡¡¡¡¡¡¡88.15%
¡¡¡¡¡¡¡¡¡¡mm_sync_madv_cp¡¡¡¡69.41¡¡¡¡¡¡¡¡¡¡¡¡62.54¡¡¡¡¡¡¡¡¡¡90.10%
¡¡¡¡¡¡¡¡¡¡mw_cp¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ 61.69¡¡¡¡¡¡¡¡¡¡¡¡63.11¡¡¡¡¡¡¡¡¡¡102.30%
¡¡¡¡¡¡¡¡¡¡mw_madv_cp¡¡¡¡¡¡¡¡¡¡¡¡61.35¡¡¡¡¡¡¡¡¡¡¡¡61.31¡¡¡¡¡¡¡¡¡¡99.93%
ratio¤¬£±£°£°°Ê²¼¤¬¹â®²½¤Ç¤¢¤ë¡£
¾¡¼ê¤ÊÍý¶þ¤À¤¬£±£°¡óÄøÅٰʾå¤Î¹â®²½¤òsignificant¤ÈÄêµÁ¤·¤Æ¤¤¤ë¡£
¥Ñ¥Ã¥Á¤ÎÀâÌÀ¤À¤¬¡¢¥á¥â¥ê¤¬ÉÔ¤·¤¿¤È¤¤Î¥Ú¡¼¥¸²ó¼ýÏÀÍý¤Ë¤ª¤¤¤Æaccessed bit¤¬Î©¤Ã¤Æ¤¤¤¿¥Ú¡¼¥¸¤ò»Ä¤·¡¢¤½¤ì°Ê³°¤ò¼Î¤Æ¤ë¡£¤È¤¤¤¦ÏÀÍý¤¬¤¢¤ë¤Î¤À¤¬¡¢¤½¤³¤Ë
¡¦¼þÊդΥڡ¼¥¸¤¬¤º¤Ã¤È¡¢accessed bit¤¬Î©¤Á³¤±¤Æ¤¤¤¿¤émmaped copyÃæ¤È¤ß¤Ê¤·¤Æaccessed bit¤ò̵»ë¤¹¤ë
¤È¤¤¤¦ÏÀÍý¤¬¤¤¤ì¤Æ¤¢¤ë¡£
ËܳÊŪ¤Ë¤ä¤ë¤Ë¤Ïpage->flags¤Ë¥Õ¥é¥°¥Ó¥Ã¥È¤òÄɲ䷤ʤ¤¤È¤¤¤±¤Ê¤¤¤¬¡¢Linux¤Ë¤ª¤¤¤Æ¤½¤ì¤Ï¥Õ¥ì¡¼¥à¤Î¸µ¤Ê¤Î¤Ç¡¢¶¯°ú¤ËÈò¤±¤Æ¤¢¤ë¡£
Íè½µ¤°¤é¤¤¤Ëlinux-mm¤ËÅꤲ¤Æ¤ß¤ë¤Ù
---
mm/vmscan.c | 46 +++++++++++++++++++++++++++++++++++++++++++---
1 file changed, 43 insertions(+), 3 deletions(-)
Index: linux-2.6.24-rc6-cp3/mm/vmscan.c
===================================================================
--- linux-2.6.24-rc6-cp3.orig/mm/vmscan.c 2008-01-13 21:58:03.000000000 +0900
+++ linux-2.6.24-rc6-cp3/mm/vmscan.c 2008-01-13 22:30:27.000000000 +0900
@@ -446,13 +446,18 @@ static unsigned long shrink_page_list(st
struct pagevec freed_pvec;
int pgactivate = 0;
unsigned long nr_reclaimed = 0;
+ unsigned long nr_scanned = 0;
+ LIST_HEAD(l_mapped_pages);
+ unsigned long nr_mapped_page_activate = 0;
+ struct page *page;
+ int reference_checked = 0;
cond_resched();
pagevec_init(&freed_pvec, 1);
+retry:
while (!list_empty(page_list)) {
struct address_space *mapping;
- struct page *page;
int may_enter_fs;
int referenced;
@@ -466,6 +471,7 @@ static unsigned long shrink_page_list(st
VM_BUG_ON(PageActive(page));
+ nr_scanned++;
sc->nr_scanned++;
if (!sc->may_swap && page_mapped(page))
@@ -493,11 +499,17 @@ static unsigned long shrink_page_list(st
goto keep_locked;
}
- referenced = page_referenced(page, 1);
- /* In active use or really unfreeable? Activate it. */
- if (sc->order <= PAGE_ALLOC_COSTLY_ORDER &&
- referenced && page_mapping_inuse(page))
- goto activate_locked;
+ if (!reference_checked) {
+ referenced = page_referenced(page, 1);
+ /* In active use or really unfreeable? Activate it. */
+ if (sc->order <= PAGE_ALLOC_COSTLY_ORDER &&
+ referenced && page_mapping_inuse(page)) {
+ nr_mapped_page_activate++;
+ unlock_page(page);
+ list_add(&page->lru, &l_mapped_pages);
+ continue;
+ }
+ }
#ifdef CONFIG_SWAP
/*
@@ -604,7 +616,31 @@ keep:
list_add(&page->lru, &ret_pages);
VM_BUG_ON(PageLRU(page));
}
+
+ if (nr_scanned == nr_mapped_page_activate) {
+ /* may be under copy by mmap.
+ ignore reference flag. */
+ reference_checked = 1;
+ list_splice(&l_mapped_pages, page_list);
+ goto retry;
+ } else {
+ /* move active list just now */
+ while (!list_empty(&l_mapped_pages)) {
+ page = lru_to_page(&l_mapped_pages);
+ list_del(&page->lru);
+ prefetchw_prev_lru_page(page, &l_mapped_pages, flags);
+
+ if (!TestSetPageLocked(page)) {
+ SetPageActive(page);
+ pgactivate++;
+ unlock_page(page);
+ }
+ list_add(&page->lru, &ret_pages);
+ }
+ }
+
list_splice(&ret_pages, page_list);
+
if (pagevec_count(&freed_pvec))
__pagevec_release_nonlru(&freed_pvec);
count_vm_events(PGACTIVATE, pgactivate);

¥Ñ¥Ã¥Á¤°¤é¤¤¤¤¤¯¤é¤Ç¤â¸«¤»¤Þ¤¹¤¬¤Ê
¤·¤«¤·¡¢i386¤¬Æ°¤«¤Ê¤¯¤Ê¤ë¤è¤¦¤Ê¥Ñ¥Ã¥Á¤òÅꤲ¤ëµ¤¤¬¤·¤ì¤ó¤Ê¡£
¤È¤ê¤¢¤¨¤º¡¢mem_notify v4¤Îºî¶È¤Ï¤¹¤Ù¤Æ´°Î»¡£
Í轵Ƭ¤°¤é¤¤¤Ë°ìÅ٤ʤ²¤ë¤Ù¡£
http://www.rubyist.net/~matz/20080108.html#p03
McAfee throws some FUD at the GPL - The INQUIRER
McAfee¤¬GPL¤ËÂФ¹¤ëFUD¤ò¹Ô¤Ã¤¿¤È¤¤¤¦Ïá£In its annual report, Windows security software vendor McAfee told its investors that open source software licence terms it vaguely characterised as " ambiguous" might "result in unanticipated obligations regarding our products."
Åê»ñ²È¤ËÂФ¹¤ëǯ¼¡Êó¹ð¤Ë¤ª¤¤¤ÆMcAfee¤Ï°Ê²¼¤Î¤è¤¦¤ËÊó¹ð¤·¤¿¡£¡Ö¥ª¡¼¥×¥ó¥½¡¼¥¹¥½¥Õ¥È¥¦¥§¥¢¤ÎÛ£Ëæ¤ÊÀ¼Á¤Ë¤è¤Ã¤Æ¡¢²æ¡¹¤Î¥×¥í¥À¥¯¥È¤Ëͽ´ü¤·¤Ê¤¤µÁ̳¤¬È¯À¸¤¹¤ë²ÄǽÀ¤¬¤¢¤ë¡×
"To the extent that we use 'open source' software, we face risks," McAfee stated.
¡Ö¥ª¡¼¥×¥ó¥½¡¼¥¹¥½¥Õ¥È¥¦¥§¥¢¤ÎÍøÍѤˤè¤Ã¤Æ¡¢²æ¡¹¤Ï¥ê¥¹¥¯¤ËľÌ̤·¤Æ¤¤¤ë¡×
΢¤Ï¼è¤Ã¤Æ¤¤¤Ê¤¤¤±¤É¡¢¤³¤ì¤¬¿¿¼Â¤Ç¤¢¤ë¤È¤·¤¿¤é¡¢¤«¤Ê¤ê¤Ò¤É¤¤Ïá£
¤¦¡¼¤ó¡¢¤½¤¦¤Ï»×¤ï¤Ê¤«¤Ã¤¿¤ê¤¹¤ë¡£
Åê»ñ²È¸þ¤±¤Îǯ¼¡Êó¹ð½ñ¤Ï¡¢³ô²Á¤¬Íî¤Á¤¿¤È¤¤Ë¤½¤Î¥ê¥¹¥¯¤¬Á°Ç¯ÅÙ¤ÎÊó¹ð½ñ¤Ë½ñ¤¤¤Æ¤Ê¤¤¤È¡¢¤À¤Þ¤·¤¿¤Ê¡¼°·¤¤¤ÇÁʤ¨¤é¤ì¤Æµã¤¤ÃÌ̤Ë˪¤È¤¤¤¦¤«°ìγ¤ÇÆóÅÙ¤ª¤¤¤·¤¤¤È¤¤¤¦¤«¡¢¤½¤¦¤¤¤¦Äˤ¤¾õ¶·¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¦¤Î¤Ç°¤¤Êý¸þ¤Ë²áÉҤ˽ñ¤¯¤Î¤Ï¡¢¤¢¤Ã¤Á¤ÎÀ¤³¦¤Ç¤Ï¤à¤·¤íÎÉ¿´Åª¹Ôư¡£
Windows¤¬Ë×Í¤ë¤³¤È¤Ë¤è¤ê³ô²Á²¼Íî¤Î²ÄǽÀ¤¬¤¢¤ë¤Î¤Ï»ö¼Â¤Ê¤ó¤À¤·¡£
¤à¤·¤íannual report¤ÎÆâÍÆ¤ò¶õµ¤ÆÉ¤Þ¤º¤Ë¥®¡¼¥¯¤ËžºÜ¤·¤Á¤ã¤¦¤Î¤¬¤è¤¯¤Í¡¼¤È»×¤¦¤À¤ï¤è¡£Ê̤˥ץ쥹¥ê¥ê¡¼¥¹¤È¤«¤Ç¸ì¤Ã¤¿¤ï¤±¤¸¤ã¤Ê¤¤¤ó¤Ç¤·¤ç¡£
°ã¤¦À¤³¦¤Îʸ²½¤â¼õ¤±Æþ¤ì¤Æ¤¢¤²¤ë¤Ù¤¤À¤È»×¤¦¤Ê
¤È¤«»×¤Ã¤¿¤ê¡¢»×¤ï¤Ê¤«¤Ã¤¿¤ê¡£
ÂÌʸ¡£¡£¡£
¤¤¤¯¤é°ú±Û¤·¤·¤ÆÅ¾Á÷¤µ¤ì¤Æ¤ë¤«¤é¤Ã¤ÆÃÙ¤¹¤®¤Ê¤¤¤«¡©¡ª
¡ô£±£°Ë礰¤é¤¤¤¤¤Ã¤¤ËÍ褿¤Î¤Ç¡¢º¹½Ð¿Í¤Î¤ß¤Ê¤µ¤ó¤Ï£±¡¿£±¤ËÆÏ¤¯¤è¤¦¤Ë¤·¤Æ¤¤¤¿¤È»×¤ï¤ì¤ë
¤¤¤Þ¤«¤éÊÖ»ö¤ò½ñ¤¤¤Æ¤â»þ´ü¤Ï¤º¤ì¤À¤·¤Ê¡¼¡£¤É¤¦¤·¤è¤¦¤«¤Ê¡¼
¤½¤ì¤ò¤¤¤¤¤ï¤±¤Ë¤·¤ÆÊÖ»ö¤ò¤µ¤Ü¤ë¤«¡¼
¥¨¥í¥µ¥¤¥ÈͶƳ¤È¤«¤ÏÆÃ¤Ë¼Â³²¤Ê¤¤¤Î¤ÇÊüÃÖ¤ò´ðËܤˤ·¤Æ¤¤¤ë¤¬¡¢¤µ¤¹¤¬¤Ë¥¯¥é¥Ã¥·¥å¤ä¤éHDD¥Õ¥©¡¼¥Þ¥Ã¥È¤ä¤é¤ò»Å¹þ¤Þ¤ì¤ë¤È¿ÍÍͤËÌÂÏǤ¬¤«¤«¤ë¤Î¤Ç¡¢¾Ã¤·¤¿¤¯¤Ê¤ë¡£
¤ó¤Ç¥¤¥¿¥Á¥´¥Ã¥³¡¡¢«¤¤¤Þ¤³¤³
¤Ï¤²¤·¤¯¥á¥É¥¤
¤Ê¤ó¤«¤¤¤¤¥Õ¥£¥ë¥¿¡¼ÊýË¡¤Ê¤¤¤«¤·¤é¤Í
¤ó¤Ç¡¢ºÇ¶áº´Æ£Í¥¤Î°ìÏ¢¤ÎÃøºî¤òÆÉ¤ß¤Þ¤¯¤Ã¤¿¤Î¤Ç¥¤¥ó¥Æ¥ê¥¸¥§¥ó¥¹¶È³¦¤Î¤ä¤ê¸ý¤¬¤¹¤³¤·Ê¬¤«¤Ã¤Æ¤¤¿¤Î¤Ç¡¢¼«Ê¬¤Î¤ä¤ëµ¤¤ËÂФ·¤Æ±þÍѤ·¤Æ¤ß¤ë¥Æ¥¹¥È¡£
À®²Ì¤¬£µ¡ó¡£¤È½ñ¤¯¤È¤Þ¤ë¤Ç¥À¥á¤Ê»Ò¤ß¤¿¤¤¤Ç¤¢¤ë¤¬¡¢¤³¤³¤Ç»ëÅÀ¤òÊѤ¨¤Æ¤ß¤è¤¦¡£
¤¦¤Á¤Î¥Þ¥·¥ó¤Ë¤ª¤¤¤Æ¤Ï¥Ç¥£¥¹¥¯I/OÀǽ¤¬¤À¤¤¤¿¤¤20MB/s¤Ç¤¢¤ë¤³¤È¤¬·Ð¸³Â§¤Çʬ¤«¤Ã¤Æ¤¤¤ë¡£¤Ê¤Î¤Ç¡¢1(GB)/20(MB/s)=50s¤¬¥½¥Õ¥È¥Í¥Ã¥¯¤¬¤Ê¤¯¡¢¥Ç¥£¥¹¥¯¥·¡¼¥¯¤âȯÀ¸¤·¤Ê¤«¤Ã¤¿»þ¤Î®ÅÙ¡£
¤À¤«¤é¡¢58.17s -> 55.03s ¤È¤¤¤¦¤Î¤Ï¥ª¡¼¥Ð¥Ø¥Ã¥É¤¬8.17 -> 5.03¤È¤¤¤¦¸«Êý¤â¤Ç¤¤ë¡ª
¤Ä¤Þ¤ê
¡¡¡¡¡¡¡¡¡¡¡¡,.ލ , - ޤ.¡²¡¡¡¡ ¡¡ ¡¢
.¡¡¡¡¡¡ ¡¡ ,޲/ l/¡¡¡¡¡¡ ¡¡ ¡±¡±¡®¡³!__
¡¡¡¡ ¡¡ ŽÄ/ |'¡¡{¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ¡¡ ¡¡ ¡¡ ¡®¡³.¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ,ŽÍ
¡¡ ¡¡ £Î¨¢ ¡³. `¡¡¡¡¡¡¡¡ ¡¡ ¡¡ ¡¡ ¡¡ ¡¡ ¡¡ ¡³¡¡¡¡ ¡¡ ¡¡ ¡¡ /¡³¡¡/¡¡ ¢Ë
¡¡¡¡ N.¡³.¡³¡¢¡¡ ¡¡ ¡¡ ¡¡ ¡¡ ¡¡ ,¡¡¡¡¡¡ ¡¡ ¡¡ }¡¡¡¡¡¡¡¡l¡À/¡¡¡¡`¡ì
.¡¡¡¡¡³¡³.¡À¡¡¡¡¡¡¡¡ ¡¡ ¡¡ ,.ލ޲ŽÊ¡¡¡¡¡¡¡¡ ¡¡ |¡¡¡¡ ¡²|
¡¡¡¡ ¡´¥Ëް¡¡__¡¡_¡¡-=_×ÄŽ¿ŽÉ u_¡À¡³¡¢ ¡¡ |¡¡¡¡¡À¡¡¡¡¡¡ ¼Â¤Ï¡Ü£´£°¡ó¤Î
.¡¡¡¡ ¡¡ ¡±ŽÞr=<¡¾ŽÓŽÐޤޯr;¡á=Žª;Ž¡ã_¡¶-=7¡¡³¡¡¡¡¡¡> ¹â®²½¤ËÀ®¸ù¤·¤Æ
.¡¡¡¡¡¡¡¡ ¡¡ l ¡¡ ¡±ŽØ¡¼h ¡® ް¡¾¡¾'¡¡l¡¾''¡ÑÒ)'./¡¡¢Ü__¡¡¡¡¤¤¤¿¤ó¤À¤è¡ª¡ª
¡¡¡¡¡¡¡¡¡¡¡¡ ŽÞiް- ޲'__¡¡¡³Ž¤..¡²__¥Î¡¡¡¡ ŽÄr¡¾'¡¡¡¡¡¡¡¡/¡¡¡¡ ¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡l¡¡¡¡ `¡²__,.¡¢ ¡¡ ¡¡ u¡¡./¨¢¡¡¡¡¡¡¡¡/¡²¡¡
.¡¡¡¡¡¡¡¡¡¡ ¡¡ ¡³.¡¡ }z¡¾r--|¡¡¡¡ ¡¡ ¡¿¡¡ ŽÄ,¡¡¡¡¡¡ ¡¡ ¡¡ |¡¡ ,¡¢
¡¡¡¡¡¡¡¡ ¡¡ ¡¡ ¡¡ >ޤ`ް-- '¡¡¡¡.¡¿¡¡ ¡¿¡¡|¡³¡¡¡¡¡¡¡¡¡¡l¡¿¡¡¡³¡¡¡¡ ,ŽÍ
¡¡¡¡¡¡¡¡¡¡¡¡_,.¡¿| ¡³`ް--¡¾ _¡.. ¡¾''¡ ¡¡ ./¡¡ ¡Àޤ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡À/¡¡¡³/
-¡¾ '''" ¡± /¡¡ :| ¡¡ ,¡µ=¡ã¡¡¡¡¡¡¡¡¡¡¡¡/¡¡¡¡¡¡ |¡¡`'''¡¾-¡¡Ž¤.._
¡¡¡¡¡¡¡¡¡¡/¡¡¡¡ !.¡¿l;';';';';';';¡À¡¡¡¡¡¡ ./¡¡¡¡¡¡¡¡¨¢ ¡¡ ¡²
¡¡ ¡¡ ¡¡ _,¡ä '¡|l. ŽÐ:¡µŽ¤;';';_/,¡¡À¡¡ ./|._ , --ޤ¡¡|¡¡i¡!¢Þ!l¡¡ r:,¡ái ¡¡¡¡
.¡¡¡¡ ¡¡ | ¡¡ ¡¡ |:.l.¡¡/';';';';';|=¡¡¡¡¡³/:.|¡¡.|l¢Þ£ì £ìŽÆ._ | ŽÞް=':|¡¡|. L._Ž£¡¡¡Ë¡Ë
¡¡ ¡¡ ¡¡ l.¡¡ ¡¡ |:.:.l./';';';';';';'!¡¡ ¡¡ /:.:.| i¡|.ް¡¾' | /¡¡|¡¡ ¡¡ |.¡¡!¡¡¡¡ l
.¡¡¡¡¡¡¡¡ l.¡¡¡¡ |:.:.:.!';';';';';';';'|¡¡¡¡/:.:.:.:!.|"'|.¡¡¡¡ l'¡¡ ¨¢-==:|.¡¡!¡¡==l¡¡¡¡ ,. -¡¾;
¡¡¡¡¡¡¡¡¡¡l¡¡¡¡ |:.:.:.:l;';';';';';';';|¡¡/:.:.:.:.:| i¡á!ް=;: l¡¡¡¡ |¡¡ ¡¡ l.¡¡|¡¡¡¡ |¡¡/ ¡¡ //
¡¡¡¡ ¡¡ ¡¡ l¡¡¡¡|:.:.:.:.:l;';';';';';';'|/:.:.:.:.:.:.!¨¢¡¡l¡¡ ¡¡ l¡¢¡¡:|¡¡ ¡¡ |¡¡}¡¡¡²|,.{::¡¡¡¡7¡¡¡Ë¡Ë
¡¡ ¡¡ ¡¡ ¡¡ l¡¡ |:.:.:.:.:.:l;';';';';'/:.:.:.:.:.:.:.:|¡¡|__,.¡³Ž¤__,. ¡³._Ž£ ް=:::ŽÚ'¡¡ ::::::|;¡¡¡¡ 7
.¡¡¡¡¡¡¡¡¡¡¡¡l¡¡|:.:.:.:.:.:.l;';';'/:.:.:.:.:.:.:.:.:.|.¡¡¡À:::::¡À:::::¡¡¡³¡¡ ::::::!¡ì¡¡:::| ¡¡ .:/
.¡¡¡¡¡¡¡¡¡¡¡¡ £ì |:.:.:.:.:.:.:¢Ë:.:.:.:.:.:.:.:.:.:.:.! ¡¡ /¡³:::¡¡`:::¡¡¡¡¡¡¡¡::::¡¡¡¡....::....¡¿¡¡
¡¦¡¦¡¦¡¦¤À¤á¤À
̵Íý¤¬¤¢¤ê¤¹¤®¤ë¡£
¤ä¤ëµ¤¤ò¤À¤¹¤Ê¤ó¤ÆÌµÍý¡£
¡¡¡¡¡¡¡¡/::::i::::ޤ:::¡³Ž¤:::::¡À:¡³:¡À::::::¡³:::ޤ::¡³::ޤ:',
¡¡ ¡¡¡¡/::i|::l::ŽÄޤ¡³::ޤ:::¡³:ޤ::::::¡À::¡³::::l::::¡³::i:::i:::!
¡¡¡¡¡¡/:/:!:::!:|::¡³:¡À¡³::::ޤ:¡À::::¡³:::¡³!::::::i::|:::!::!
¡¡¡¡¡¡!ŽÊ::|::::i::l:|¿´Ž¤:¡³::¡À:¡³_¡Àޤ¡À:::¡³:::|!::|:|i
¡¡¡¡¡¡¡¡iޤ:!:|:ޤN{ޤŽËj¡³¡µ¡À¡´Ž² ŽË£ê¡¡>ޤ¡³i:ޤ|!:|:l
¡¡¡¡¡¡¡¡¡¡¡³:!::ŽÄ¡³¡±¡¡l! `¡¡¡¡¡®¡±¡¡¡|::l::|:|j:,!:!¡¡¡¡ÂÌÌܤÀ¤³¤¤¤Ä
¡¡¡¡¡¡¡¡¡¡¡¡ŽÄޤ::! u¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£ê |::/lj:::!ŽØ
¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ¡´¡¢¡¡ Ц -¡¡¡¡¡¡¡¡u¡¡ŽØŽ²:|ŽØ¡¡¡¡¡¡¡¡¡¡¡¡Á᤯¤Ê¤ó¤È¤«¤·¤Ê¤¤¤È¡Ä¡Ä
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ŽØ¡³¡¡¡¾Ž¤Ž°- ޤ_¡¡¡¡ ¡¿Ž²:::i
¡¡¡¡¡¡¡¡¡¡¡¡ rް'"ŽÄ:lŽÞޤ ¡¡¡± ¡¡ .¡¿¡¡ , |::!
¡¡¡¡¡¡¡¡¡¡¡¡/ ŽÍ¡¡¡´¡¡¡³Ž¤ _,.¡¡'¡¡¡¡ /¡¡|:'
¤³¤ÎÄêÍý¤Ë´Ø¤·¤Æ¡¢»ä¤Ï¿¿¤Ë¶Ã¤¯¤Ù¤¾ÚÌÀ¤ò¸«¤Ä¤±¤¿¤¬¡¢¤³¤Î32bit¥¢¥É¥ì¥¹¶õ´Ö¤Ï¤½¤ì¤òmmap¤¹¤ë¤Ë¤Ï¶¹¤¹¤®¤ë
¤È°ä¸À¤µ¤ì¤Æ¤·¤Þ¤Ã¤Æ¤¤¤ë¤é¤·¤¤¡£Æî̵
¥½¡¼¥¹¤òÆÉ¤ß¤Ê¤¬¤é¤Ä¤é¤Ä¤é¤È¹Í¤¨¤Æ¤ß¤¿¤È¤³¤í¡¢mw_madv_cp¤Ç¤Ï¡¢¤É¤¦¤ä¤é°Ê²¼¤Î¥ë¡¼¥È¤Ç½èÍý¤¬¿Ê¤ó¤Ç¤¤¤ë¤è¤¦¤À¤Èʬ¤«¤Ã¤Æ¤¤Þ¤·¤¿
Á°ÄóÃμ±¤Ç¤¹¤¬¡¢Linux¤Ë¤ª¤¤¤Æ¤Ï¥Ú¡¼¥¸¤Ïactive¥ê¥¹¥È¤Èinactive¥ê¥¹¥È¤È¤¤¤¦£²ËܤÎ
LRU¥ê¥¹¥È¤Ç´ÉÍý¤µ¤ì¤Æ¤¤¤Þ¤¹¡Ê/proc/meminfo¤Ç¤Îactive, inactiveÍó¤Í¡Ë
¤Ê¤ó¤Ç¡¢ÆóËܤ¢¤ë¤Î¤«¤È¤¤¤¦¤È¥Ú¡¼¥¸²ó¼ý¤¹¤ë¤È¤¤ËÉÑÈˤ˻²¾È¤µ¤ì¤Æ¤¤¤ë¥Ú¡¼¥¸¤ò
ºÇ½é¤«¤é½ü³°¤Ç¤¤ë¤È¤ª¤¤¤·¤¤¤Ç¤·¤ç¡©¤Ã¤Æ¤°¤é¤¤¤ËÍý²ò¤·¤Æ¤ª¤¤¤Æ¤¯¤À¤µ¤¤¡£
̾Á°¤«¤éʬ¤«¤ë¤è¤¦¤Ëinactive¤Ê¤Û¤¦¤¬¡¢¼Î¤Æ¤é¤ì¤ë¡Êor ¥¹¥ï¥Ã¥×¥¢¥¦¥È¤µ¤ì¤ë¡ËľÁ°¤Î¥Ú¡¼¥¸·²¤Í¡£
£±¡¥¤Þ¤ºmmaped¤Ê¥á¥â¥ê¥¢¥¯¥»¥¹¤ò·Àµ¡¤Ëread ahead¤¬Áö¤ê¤Þ¤¹¡£
¡¡¡¡¤Ç¡¢read ahead¤ÏÆÉ¤ß¹þ¤ó¤À¥Ú¡¼¥¸¤òinactive¥ê¥¹¥È¤Ë¤Ä¤Ê¤®¤Þ¤¹
£²¡¥memcpy·¯¤¬¼ÂºÝ¤Ë¥á¥â¥ê¤Ë¿¨¤ê¤Þ¤¹¡£¤³¤³¤ÇPTE¤Îaccess bit£ô¤¬ON¤Ë¤Ê¤ê¤Þ¤¹¡£
£³¡¥¤É¤³¤«¤Î¥¿¥¤¥ß¥ó¥°¤Ç¥á¥â¥ê¤¬Â¤ê¤Ê¤¯¤Ê¤Ã¤Æ¥Ú¡¼¥¸²ó¼ý¤¬Áö¤ê¤Þ¤¹
¡¡¡¡¡Ê¤ª¤¤¤é¤Î¥Þ¥·¥ó¤Ï£µ£±£²M¤·¤«¤Ê¤¤¤Î¤Ç¡¢¥ª¥ó¥á¥â¥ê¤Ç£±G¥³¥Ô¡¼¤ÏÀäÂФ¢¤ê¤¨¤Ê¤¤¡Ë
£´¡¥¤³¤³¤Ç¥¹¥ï¥Ã¥×¥¢¥¦¥È¤·¤è¤¦¤«¤Ê¡¼¤Èinactive¥ê¥¹¥È¤òçÓ¤á¤Æ¤¤¤ë¤È¤¤Ë¡¢access bit¤¬
Ω¤Ã¤Æ¤¤¤ë¤È¡¢¤Ê¤ó¤À»È¤Ã¤Æ¤ë¤¸¤ã¤ó¤È¤¤¤¦¤³¤È¤Ç¤½¤Î¥Ú¡¼¥¸¤Ïactive list¤Ë°Ü¤µ¤ì¤Þ¤¹¡£
¡¡¡¡º£²ó¤Î¥±¡¼¥¹¤Ç¤Ï¤Ê¤ó¤ÈÁ´¥Ú¡¼¥¸active list¹Ô¤
£µ¡¥¤ÇLinux¤Î¥á¥â¥ê´ÉÍý¤Î¥Ý¥ê¥·¡¼¤È¤·¤Æmapped page¤ÈÉáÄ̤Υե¡¥¤¥ë¥¥ã¥Ã¥·¥å¤Ï
active¤«¤éinactive¤Ø¤ÎžÍ¤ä¤¹¤µ¤¬°ã¤¤¤Þ¤¹¡£
¤Þ¤¢¡¢ÉáÄ̤˹ͤ¨¤Æ¥á¥â¥ê¤È¤·¤Æ¥¢¥¯¥»¥¹¤¹¤ë¥Ú¡¼¥¸¤Î¤Û¤¦¤¬¥é¥ó¥À¥à¥¢¥¯¥»¥¹¤µ¤ì¤ë
¡¡¡¡²ÄǽÀ¤Ï¹â¤¤¤ï¤±¤Ç¡¢¥·¡¼¥±¥ó¥·¥ã¥ë¥¢¥¯¥»¥¹¤Î²ÄǽÀ¤¬¹â¤¤mmap¤µ¤ì¤Æ¤¤¤Ê¤¤
¡¡¡¡ÉáÄ̤Υե¡¥¤¥ë¥¥ã¥Ã¥·¥å¤òÀè¤Ë¼Î¤Æ¤Æ¤¤¤¯¤Î¤Ï¹çÍýŪ¤È¤¤¤¨¤Ê¤¯¤â¤Ê¤¤¡£
£¶¡¥¤Ç¡¢memory pressure¤¬½½Ê¬¹â¤Þ¤ë¤Þ¤Ç¤Ïactive list¤Ë»Ä¤Ã¤¿read¥á¥â¥ê¤¬
¤¼¤ó¤¼¤ó¼Î¤Æ¤é¤ì¤Ê¤¤¤Î¤Ç¡¢writeÍѤΥá¥â¥êÎΰ褬¤¹¤¯¤Ê¤¯¤Ê¤Ã¤Æ¤¯¤ë¡£
¤Ç¡¢¤É¤¦¤·¤è¤¦¤â¤Ê¤¯¤Ê¤ë¤È¡¢¤¢¤ëïçÃͤòͤ¨¤¿¤È¤³¤í¤Ç°ìµ¤¤Ëinactive list¤Ë
°Üư¤¹¤ë¤Î¤Çή¤ìºî¶È¤¬Íð¤ì¤Þ¤¯¤ê¡£¤È
¡¡¡¡¼ÂºÝiostat¤Ç¸«¤ë¤ÈI/OžÁ÷¥ì¡¼¥È¤¬¤Û¤ó¤È¤¦¤Ë¾å²¼¤·¤Þ¤¯¤ë
¤Ê¤Î¤Ç¡¢£´¤ÎÃʳ¬¤Ç¥·¡¼¥±¥ó¥·¥ã¥ë¥¢¥¯¥»¥¹¤À¤è¤ó¡£¤Èmadvise¤µ¤ì¤Æ¤¤¤¿¤é¡¢
active list¤Ë¤¤¤«¤Ê¤¤¡£¤È¤¤¤¦¥Ñ¥Ã¥Á¤ò¤³¤µ¤¨¤Æ¤ß¤Þ¤·¤¿¡£
·ë²Ì¤Ï°Ê²¼¡£¤è¤¦¤ä¤Ã¤Èrw_cpÊ¡£
Ì󣵡ó¤ÎÀǽ¸þ¾å¤ä¤Í¡£
+(eval):1> sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'
+./test.sh:10> time ./rw_cp testfile1G testfile1G2
0.04user 4.40system 0:55.81elapsed 7%CPU (0avgtext+0avgdata 0maxresident)k
2099512inputs+2097152outputs (0major+91minor)pagefaults 0swaps
+(eval):1> sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'
+./test.sh:17> time ./mw_madv_cp testfile1G testfile1G2
0.00user 5.11system 0:55.03elapsed 9%CPU (0avgtext+0avgdata 0maxresident)k
2099368inputs+2097152outputs (1major+262233minor)pagefaults 0swaps
¤Á¤Ê¤ß¤Ë¡¢¤¢¤Æ¤¿¥Ñ¥Ã¥Á¤Ï°Ê²¼
---
mm/vmscan.c | 29 ++++++++++++++++++++++++++++-
1 file changed, 28 insertions(+), 1 deletion(-)
Index: linux-2.6.24-rc6-cp2/mm/vmscan.c
===================================================================
--- linux-2.6.24-rc6-cp2.orig/mm/vmscan.c 2008-01-03 02:05:11.000000000 +0900
+++ linux-2.6.24-rc6-cp2/mm/vmscan.c 2008-01-03 02:25:39.000000000 +0900
@@ -435,6 +435,30 @@ cannot_free:
return 0;
}
+static bool page_sequential_mapped(struct page *page)
+{
+ struct address_space *mapping = page->mapping;
+ pgoff_t pgoff = page->index << (PAGE_CACHE_SHIFT - PAGE_SHIFT);
+ struct vm_area_struct *vma;
+ struct prio_tree_iter iter;
+ bool ret = true;
+
+ if (!page_mapped(page))
+ return false;
+
+ spin_lock(&mapping->i_mmap_lock);
+ vma_prio_tree_foreach(vma, &iter, &mapping->i_mmap, pgoff, pgoff) {
+ if (!VM_SequentialReadHint(vma)) {
+ ret = false;
+ break;
+ }
+ }
+ spin_unlock(&mapping->i_mmap_lock);
+ return ret;
+}
+
+
+
/*
* shrink_page_list() returns the number of reclaimed pages
*/
@@ -496,7 +520,8 @@ static unsigned long shrink_page_list(st
referenced = page_referenced(page, 1);
/* In active use or really unfreeable? Activate it. */
if (sc->order <= PAGE_ALLOC_COSTLY_ORDER &&
- referenced && page_mapping_inuse(page))
+ referenced && page_mapping_inuse(page) &&
+ !page_sequential_mapped(page))
goto activate_locked;
#ifdef CONFIG_SWAP
¤¬¡¢¤·¤«¤·¡¢¤³¤Î¥Ñ¥Ã¥Á¤Ï°Ê²¼¤ÎÃ×̿Ū¤Ê·çÅÀ¤¬¤¢¤ë
¡¦ÉáÄ̤οͤÏmadvise¤Ê¤ó¤«»È¤ï¤Ê¤¤¤Î¤Ç¡¢ÌÀ¼¨Åª¤Ê¥Ò¥ó¥È¤Ê¤·¤Ë¥·¡¼¥±¥ó¥·¥ã¥ë¥¢¥¯¥»¥¹¤«
¥é¥ó¥À¥à¥¢¥¯¥»¥¹¤«¤ò¿ä¬¤·¤Ê¤¤¤ÈËܼÁŪ¤Ê²ò·è¤Ë¤Ï¤Ê¤é¤Ê¤¤¡£
¡¡¡Ê¤³¤Î¥Ñ¥Ã¥Á¤Ç¤Ïmw_cp¤Ï¤¼¤ó¤¼¤ó¹â®²½¤µ¤ì¤Æ¤¤¤Ê¤¤¡Ë
¡¡¤Ê¤ó¤À¤±¤É¡¢mmap¤Ç¤½¤ì¤ò¿ä¬¤¹¤ë¤Î¤Ï¤á¤Á¤ã¤¯¤Á¤ãÆñ¤·¤¤¤¾¡¦¡¦¡¦
¡¦¤½¤â¤½¤â¡¢lock dependencyŪ¤Ë¹Ôµ·¤¬°¤¤¤Î¤Ç¡¢¤¿¤Þ¤Ë¥Ç¥Ã¥É¥í¥Ã¥¯¤·¤ÆOS¥Ï¥ó¥°¤¹¤ë
¡¡¢¬¥Ð¥«¥¹£÷£÷£÷
º£¸å¤Îwork¤È¤·¤Æ¤Ï
¡¦mw_cp¤Îmajor faultÎ̤«¤é¤¤¤Ã¤Æread ahead¤¬¤¦¤Þ¤¯Æ°¤¤¤Æ¤¤¤Ê¤¤¤Î¤Çư¤¯¤è¤¦¤Ë¤¹¤ë
¡¦read ahead¤¬¤¦¤Þ¤¯HIT¤·¤Æ¤¤¤ë¤È¤¤Ï¥·¡¼¥±¥ó¥·¥ã¥ë¥¢¥¯¥»¥¹¤È¤ß¤Ê¤¹¤è¤¦¤Ë¤¹¤ë
¤Î£²Ãʳ¬¤Çºî¶È¤ò¿Ê¤á¤ì¤Ð¤¤¤¤¤È»×¤ï¤ì¤ë¡£
¤Æ¤«¡¢ËÜÅö¤Ë¤Ê¤Ë¤ò¤ä¤Ã¤Æ¤¤¤ë¤ó¤À¤«

¤Ê¤Ë¤ò¤ä¤Ã¤Æ¤ë¤Î¡©¡¡¥é¥ó¥¥ó¥°¡ª
²þ¤¤·¤ä¤¹¤¤¤è¤¦¤Ë¤È¡¢ºÇ¿·¥«¡¼¥Í¥ë¥Ó¥ë¥É¤·¤ÆºÆ¥Æ¥¹¥È¤·¤¿¤é¤á¤Ã¤µÂ®¤¤¤ó¤Ç¤ä¤ó¤Î¡£
¤ä¤ëµ¤¤Ê¤¯¤¹¤ï¡¼
2.6.24-rc6¤Ç¤Î·ë²Ì¤Ï°Ê²¼
[kosaki@sc420 copy]$ ./test.sh
+./test.sh:10> time ./rw_cp testfile1G testfile1G2
0.06user 4.70system 0:56.17elapsed 8%CPU (0avgtext+0avgdata 0maxresident)k
2099456inputs+2097152outputs (0major+106minor)pagefaults 0swaps
+./test.sh:12> time ./rw_fadv_cp testfile1G testfile1G2
0.04user 4.54system 0:53.10elapsed 8%CPU (0avgtext+0avgdata 0maxresident)k
2099448inputs+2097152outputs (0major+107minor)pagefaults 0swaps
+./test.sh:14> time ./mm_sync_cp testfile1G testfile1G2
0.46user 3.52system 1:07.61elapsed 5%CPU (0avgtext+0avgdata 0maxresident)k
2099904inputs+2097160outputs (32772major+491656minor)pagefaults 0swaps
+./test.sh:16> time ./mm_mun_cp testfile1G testfile1G2
0.54user 3.55system 1:06.09elapsed 6%CPU (0avgtext+0avgdata 0maxresident)k
2100168inputs+2097160outputs (32773major+491654minor)pagefaults 0swaps
+./test.sh:18> time ./mm_sync_madv_cp testfile1G testfile1G2
0.78user 2.91system 1:17.44elapsed 4%CPU (0avgtext+0avgdata 0maxresident)k
2100136inputs+2097160outputs (8major+524420minor)pagefaults 0swaps
+./test.sh:20> time ./mm_mun_madv_cp testfile1G testfile1G2
0.76user 3.22system 1:09.66elapsed 5%CPU (0avgtext+0avgdata 0maxresident)k
2100224inputs+2097168outputs (8major+524422minor)pagefaults 0swaps
+./test.sh:22> time ./mw_cp testfile1G testfile1G2
0.00user 4.94system 0:59.05elapsed 8%CPU (0avgtext+0avgdata 0maxresident)k
2100288inputs+2097408outputs (16391major+245892minor)pagefaults 0swaps
+./test.sh:24> time ./mw_madv_cp testfile1G testfile1G2
0.00user 5.06system 0:58.17elapsed 8%CPU (0avgtext+0avgdata 0maxresident)k
2100352inputs+2097152outputs (8major+262276minor)pagefaults 0swaps
ÁêÊѤï¤é¤ººÇ®ÃͤϤդĤ¦¤Îread-write¤Ç¤Î¥³¥Ô¡¼¤Ç¤¹¤¬¡¢¤³¤Î¤°¤é¤¤¤À¤È¤Û¤«¤ÎÊýË¡¤Ç¤â¤¼¤ó¤¼¤óµö¤»¤ëµ¤¤¬¤·¤Þ¤¹
mmap-mmap¥³¥Ô¡¼¤Î¹â®²½¡ÊÌó£²Çܡˤ⤹¤´¤¤¤·¡¢madvise¤«¤±¤¿¤È¤¤Î¥Ú¡¼¥¸¥Õ¥©¥ë¥È¤Î¿ô¤¬Ì󣱡¿£±£°£°£°¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
¹âÉé²Ù»þ¤Ë¸ú¤¤½¤¦¤Ç¤¹¤Í¡£
¡¦¡¦¡¦
¡¦¡¦¡¦¡¦¡¦¡¦
¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦
¤µ¤Æ¡¢¼¡¤Î¥Í¥¿¤ò¤µ¤¬¤¹¤«

ͫݵ¡ª¡¡¥é¥ó¥¥ó¥°¡ª