¥×¥í¥Õ¥£¡¼¥ë

 kosaki

Author: kosaki
Ï¢ÍíÀè¤Ï¥³¥Á¥é

¥Ö¥í¥°¸¡º÷
ºÇ¶á¤Îµ­»ö
ºÇ¶á¤Î¥³¥á¥ó¥È
ºÇ¶á¤Î¥È¥é¥Ã¥¯¥Ð¥Ã¥¯
¥ê¥ó¥¯
¥«¥Æ¥´¥ê¡¼
·îÊÌ¥¢¡¼¥«¥¤¥Ö
RSS¥Õ¥£¡¼¥É
FC2¥Ö¥í¥°¥é¥ó¥­¥ó¥°
¤³¤Î¥¨¥ó¥È¥ê¡¼¤ò´Þ¤à¤Ï¤Æ¤Ê¥Ö¥Ã¥¯¥Þ¡¼¥¯

relatime¤¬¤É¤³¤Ç¼ÂÁõ¤µ¤ì¤Æ¤¤¤ë¤Î¤«Ä´¤Ù¤Æ¤ß¤¿

ITPro¤ÎLinux¥Á¥å¡¼¥Ë¥ó¥°¤Îµ­»ö¤¬¤Ò¤É¤¤»ö¤Ë¤Ê¤Ã¤Æ¤¤¤ë·ï¤Ë¤Ä¤¤¤Æ
http://mkosaki.blog46.fc2.com/blog-entry-535.html


¤È¤¤¤¦¿ôËÜÁ°¤Îµ­»ö¤Ë¤Ä¤¤¤Æ¡¢id:shiumachi¤µ¤ó¤¬Äɻ¤Æ¤¯¤ì¤Þ¤·¤¿¡£

¤Ä¡¡http://d.hatena.ne.jp/shiumachi/20080605


¤à¤à¤à¡¢¤¹¤Ð¤é¤·¤¤¤Ç¤¹¡£
ÆÃ¤Ërelatime¤Î¤¢¤¿¤ê¤¬½¨°ï¤Ç¤¹¡£relatime¤ÎÀ­Ç½Â¬Äê¤Ã¤ÆÂ¾¤Ë¤¢¤ó¤Þ¤ê¤Ê¤¤¤Î¤Ç¤Ï¤Ê¤¤¤«¤·¤é¡£

Ê£¿ô¤ÎÊý¤«¤é¤´»ØÅ¦¤¤¤¿¤À¤¤¤Æ¤ª¤ê¤Þ¤¹¤¬¡¢noatime¤Ï¤¢¤Îµ­»ö¤Î¤Ê¤«¤Ç¿ô¾¯¤Ê¤¤¡¢¸½ºß¤Ç¤â°ÕÌ£¤Î¤¢¤ë¥ª¥×¥·¥ç¥ó¤Ç¤¹¡£
¤»¤Ã¤«¤¯¤Ê¤Î¤Ç¡¢¤ªÎ餬¤Æ¤é¡¢relatime¤Ë¤Ä¤¤¤Æ¤Á¤ç¤¤¤ÈÄɵ­¤·¤Æ¤ß¤Þ¤¹¡£

¤Þ¤º¡¢atime¤Þ¤ï¤ê¤Î¥ª¥×¥·¥ç¥ó¤Î°ÕÌ£¤«¤é


¥Ç¥Õ¥©¥ë¥È¡§¡¡¡¡¡¡¾ï¤Ëatime¤ò¹¹¿·¤¹¤ë
noatime¡§¡¡¡¡¡¡¡¡¾ï¤Ëatime¤ò¹¹¿·¤·¤Ê¤¤
nodiratime¡§ Âоݤ¬¥Õ¥¡¥¤¥ë¤Î¤È¤­¤Ï¾ï¤Ë¹¹¿·¡¢¥Ç¥£¥ì¥¯¥È¥ê¤Î»þ¤Ï¾ï¤Ë¹¹¿·¤·¤Ê¤¤
relatime¡§¡¡¡¡¡¡ inode¾å¤Çatime¤¬mtime¤äctime¤è¤ê¤â¸Å¤¯¤Ê¤Ã¤Æ¤·¤Þ¤Ã¤¿»þ¤À¤±¹¹¿·


nodiratime¤Èrelatime¤ÏξÊý¤È¤ânoatime¤ÎÉûºîÍѤò·Ú¸º¤¹¤ë¤¿¤á¤ËÄɲ䵤줿µ¡Ç½¤Ç¤¹¡£
¤³¤ÎÉûºîÍѤòÀâÌÀ¤¹¤ë¤Ë¤¢¤¿¤Ã¤Æ¡¢atime¤È¤Ï²¿¤«¡¢¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£

¤Þ¤º¡¢atime¤È¤Ï(Access TIME)¤Îά¤Ç¤½¤Î̾¤Î¤È¤ª¤ê¡¢¥¢¥¯¥»¥¹¤·¤¿»þ´Ö¤òɽ¤·¤Þ¤¹¡£
¤¦¡¼¤ó¡¢ÀâÌÀ¤Ë¤Ê¤Ã¤Æ¤Ê¤¤¡£
¤³¤¤¤Ä¤¬¤Ê¤¼¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¤òÍî¤È¤¹¤«¤È¤¤¤¦¤È
atime¹¹¿· ¡á inode¾ðÊó¤Î¹¹¿· ¡á ¥Ç¥£¥¹¥¯½ñ¤­¹þ¤ß¤ÎɬÍפ¬È¯À¸
¤È¤¤¤¦Ï¢º¿¤ò°ú¤­µ¯¤³¤¹¤«¤é¤Ç¤¹¡£
¤µ¤é¤Ë°­¤¤¤³¤È¤Ë¡¢inode¾ðÊó¤Ï¤¿¤¤¤Æ¤¤¥Ç¡¼¥¿ËÜÂΤȤϥǥ£¥¹¥¯¤ÎʪÍýŪ¤Ê°ÌÃÖ¤¬Î¥¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢ÌµÂ̤ʥ·¡¼¥¯¤¬Í¶È¯¤µ¤ì¤Þ¤¹¡£
¤¿¤¤¤Æ¤¤¤Î¥Ç¥£¥¹¥¯·Ï¥Ù¥ó¥Á¥Þ¡¼¥¯¤Ï¥·¡¼¥¯²ó¿ô¤Ç¾¡É餬·è¤¹¤ë¤Î¤Ç¡¢¤³¤ì¤¬¥Ù¥ó¥Á¤ÇÀ­Ç½¤¬¤è¤¯¸«¤¨¤ë¸¶°ø¤Ç¤¹¡£

¤¢¤È¡¢ITpro¤Îµ­»ö¤Ë


°ìÊý¡¤½ñ¤­½Ð¤·À­Ç½¤Ï¤Û¤È¤ó¤ÉÊѲ½¤·¤Æ¤¤¤Ê¤¤¡£¤³¤ì¤Ïnoatime¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Æ¤¤¤Æ¤â¡¤¥Õ¥¡¥¤¥ë¤Î½ñ¤­½Ð¤·»þ¤Ë¤Ïatime¤¬¹¹¿·¤µ¤ì¤ë¤¿¤á¤Ç¤¢¤ë¡£


¤È¤¤¤¦µ­½Ò¤â¤¢¤ë¤±¤É¡¢¤³¤ì¤Ï´Ö°ã¤¤¡£

atime¤¬¹¹¿·¤µ¤ì¤ë¤Î¤Ï¡¢¤À¤¤¤¿¤¤
£±¡¥read¤·¤¿¤È¤­
£²¡¥readdir¤·¤¿¤È¤­
£³¡¥readlink¤·¤¿¤È¤­¡Êopen¤ÎÉûºîÍѤˤè¤ë°ÅÌۤΥê¥ó¥¯¥ª¡¼¥×¥ó¤â´Þ¤à¡Ë
£´¡¥mmap¤·¤¿¤È¤­
¤Î£´¥±¡¼¥¹¤Ç¡¢write¤ÏºÇ½é¤«¤éÆþ¤Ã¤Æ¤Ê¤¤¡£


¤Ç¡¢ÏäòÌ᤹¤Ènoatime¤¬Èó¾ï¤Ë¸ú¤¯¤Î¤Ï°Ê²¼¤Î£²¤Ä¤Î¥±¡¼¥¹¡£

£±¡¥find¤ä¥á¡¼¥é¡¼¤Ê¤É¡¢»³¤Û¤É¥Õ¥¡¥¤¥ë¤ò³«¤­¤Þ¤¯¤ë¥±¡¼¥¹
£²¡¥¥Ù¥ó¥Á¥Þ¡¼¥¯¥½¥Õ¥È¤Ê¤É¡¢¤¢¤ó¤Þ¤êÂ礭¤¯¤Ê¤¤¥Ð¥Ã¥Õ¥¡¤ò¤Ò¤¿¤¹¤éread¤·¤Þ¤¯¤ë¥±¡¼¥¹

¤Ç¡¢atime¤Ê¤ó¤Æstat(2)¤¢¤¿¤ê¤Ç¥¢¥×¥ê¤¬ÌÀ¼¨Åª¤Ë¥Á¥§¥Ã¥¯¤·¤Ê¤¤¸Â¤ê°ÕÌ£¤Ê¤¤¤ó¤À¤«¤é¡¢
ÆÃÄꥢ¥×¥ê¤·¤«»È¤ï¤Ê¤¤¥Þ¥¦¥ó¥È¥Ý¥¤¥ó¥È¤Ë´Ø¤·¤Æ¤Ï¡¢atime¤òµ­Ï¿¤·¤Ê¤¯¤Æ¤âÂç¾æÉפʤϤº¤À¤è¤Í¡¼
¤È¤¤¤¦¥¢¥¤¥Ç¥¢¤¬½Ð¤Æ¤¯¤ë¡£¤È¡£

¤Ç¡¢nodiratime¤Èrelatime ¤ÏξÊý¤È¤ânoatime¤ÎÉûºîÍѤò´ËϤ¹¤ë¤¿¤á¤Ë³«È¯¤µ¤ì¤¿¤â¤Î¤Ç

relatime¤Ï¡¢¤¤¤¯¤Ä¤«¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ÏÆÃÄê¤Î¥Õ¥¡¥¤¥ë¤Î¹¹¿·¤ò¥Õ¥¡¥¤¥ë¤·¤Æ¤¤¤Æ¡¢
mtime¤Èatime¤òÈæ³Ó¤·¤Æmtime¤Î¤Û¤¦¤¬¿·¤·¤±¤ì¤Ð¡¢¡Ö狼¤¬²¶¤¬ÆÉ¤ó¤À¸å¤Ë¹¹¿·¤·¤¿¡×
¤È¤ß¤Ê¤·¤Æ¤â¤¦°ìÅÙÆÉ¤ß¤Ë¤¤¤¯¤ï¤±¡£
¤À¤«¤é¡¢mtime¤¬¿·¤·¤¤¤È¤­¤Ïatime¤Î¹¹¿·¤Ë°ÕÌ£¤¬¤¢¤ë¤±¤É¡¢mtime¤¬¸Å¤¤¤È¤­¤Ï
¤½¤ì°Ê¾åatime¤ò¹¹¿·¤·¤Æ¤âï¤â¤¦¤ì¤·¤¯¤Í¡¼¤¼¡£
¤È¤¤¤¦¡¢¤Ê¤ó¤È¤¤¤¦¤«mutt¤òinotify¤ËÂбþ¤µ¤»¤í¤è¡£¤È¤«Æ¬¤¬¤è¤®¤ë¤è¤¦¤Ê
¥¹¥Æ¥­work around¡¡¼ÂÁõ¡£

nodiratime¤Ï¡¢¥Õ¥¡¥¤¥ë¤Îatime¤ò¥Á¥§¥Ã¥¯¤¹¤ë¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï¤è¤¯¤¢¤ë¤¬¡Ê¥á¡¼¥é¤È¤«¡Ë
¥Ç¥£¥ì¥¯¥È¥ê¤Îatime¤ò¥Á¥§¥Ã¥¯¤¹¤ë¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ê¤ó¤Æ¤Ê¤¤¤ó¤¸¤ã¤Í¡©
¤È¤¤¤¦»×Áۤǥǥ£¥ì¥¯¥È¥ê¤À¤±µ­Ï¿¤ò¾Ê¤¤¤Æ¤ß¤¿¡£
¤È¤¤¤¦¤ä¤Ã¤Ñ¤ê·è¤á¤¦¤Á´¶¤¢¤Õ¤ì¤ëwork around.

¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
¤¿¤Ö¤ó¡¢relatime¤Ç£¹£¹¡ó¤Î¿Í¤¬¥Ï¥Ã¥Ô¡¼¤Ë¤Ê¤ì¤ë¤Î¤Ç¡¢¥Ó¥¸¥Í¥¹¤Çlinux¤ò»È¤Ã¤Æ¤¤¤ë¿Í¤Ï¡¢
¥Ç¥£¥¹¥È¥ê¤Ë¥Ð¥Ã¥¯¥Ý¡¼¥È¤ò°ÍÍꤹ¤ë¤È¥Ï¥Ã¥Ô¡¼¤Ë¤Ê¤ì¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£
¡ôÆÃ¤Ë¤·¤«¤¿¤Ê¤¯noatime¤ò»È¤Ã¤Æ¤¤¤ë¿Í¤Ë¤È¤Ã¤Æ¤Ï¡£

¤ó¤Ç¡¢¤³¤³¤«¤é¤¬¾ÜºÙ¡£

¤Þ¤È¤áµ­»ö¤È¤·¤Æ¤Ï¤¤¤Ä¤â¤Î¤è¤¦¤Ë¡¢kerneltrap¤¬½¨°ï

http://kerneltrap.org/node/14148

¥Ñ¥Ã¥Á¼«ÂΤϰʲ¼¡¢Ä¶Ã»¤¯¤ÆÊ¬¤«¤ê¤ä¤¹¤¤

http://lkml.org/lkml/2006/8/25/381


ºÇ¶á¤Î¥«¡¼¥Í¥ë¤À¤È¥ê¥Õ¥¡¥¯¥¿¥ê¥ó¥°¤µ¤ì¤¿·ë²Ì¡¢¾åµ­¥Ñ¥Ã¥ÁÅê¹Æ»þ¤È´Ø¿ô¤Î¤Ä¤¯¤ê¤¬¼ã´³ÊѤï¤Ã¤Æ¤ë¤Î¤Ç¡¢´Ø¿ôÁ´ÂΤâ¤Î¤»¤È¤¯


/**
* touch_atime - update the access time
* @mnt: mount the inode is accessed on
* @dentry: dentry accessed
*
* Update the accessed time on an inode and mark it for writeback.
* This function automatically handles read only file systems and media,
* as well as the "noatime" flag and inode specific "noatime" markers.
*/
void touch_atime(struct vfsmount *mnt, struct dentry *dentry)
{
struct inode *inode = dentry->d_inode;
struct timespec now;

if (mnt && mnt_want_write(mnt))
return;
if (inode->i_flags & S_NOATIME)
goto out;
if (IS_NOATIME(inode))
goto out;
if ((inode->i_sb->s_flags & MS_NODIRATIME) && S_ISDIR(inode->i_mode))
goto out;

/*
* We may have a NULL vfsmount when coming from NFSD
*/
if (mnt) {
if (mnt->mnt_flags & MNT_NOATIME)
goto out;
if ((mnt->mnt_flags & MNT_NODIRATIME) && S_ISDIR(inode->i_mode))
goto out;
if (mnt->mnt_flags & MNT_RELATIME) {
/*
* With relative atime, only update atime if the
* previous atime is earlier than either the ctime or
* mtime.
*/
if (timespec_compare(&inode->i_mtime,
&inode->i_atime) < 0 &&
timespec_compare(&inode->i_ctime,
&inode->i_atime) < 0)
goto out;
}
}

now = current_fs_time(inode->i_sb);
if (timespec_equal(&inode->i_atime, &now))
goto out;

inode->i_atime = now;
mark_inode_dirty_sync(inode);
out:
if (mnt)
mnt_drop_write(mnt);
}
EXPORT_SYMBOL(touch_atime);


¸«¤Æ¤Î¤È¤ª¤ê¡¢Ä¶Ã±½ã¤Ç¡¢atime¤¬¹¹¿·¤µ¤ì¤ë¤è¤¦¤Ê¥±¡¼¥¹¤Ç¡¢mtime, ctime¤è¤ê¤â¿·¤·¤«¤Ã¤¿¤é̵»ë¡£
¤È¤¤¤¦¤À¤±¡£
¤Æ¤æ¡¼¤«¡¢¤¢¤ó¤Þ¤ê®ÅÙ¤¬Íî¤Á¤ë²ÄǽÀ­¤¬¤¢¤ë¥³¡¼¥É¤Ë¸«¤¨¤Ê¤¤¤Ê¡¼

¤µ¤é¤Ë¸Ä¿ÍŪ¤Ê¥ì¥¹



²ó¿ô real user sys
1 80.533 1.031 2.370
2 0.741 0.345 0.396
3 0.719 0.325 0.394

¤³¤Î¤è¤¦¤Ë¡¢Æ±°ìµ¯Æ°»þ¤ËÊ£¿ô²ó¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¤È¡¢2²óÌܰʹߤμ¹Իþ´Ö¤Ï¶Ëü¤Ëû¤¯¤Ê¤ê¤Þ¤¹¡£

¤³¤ì¤Ï¤ª¤½¤é¤¯¥­¥ã¥Ã¥·¥å¤òÆÉ¤ß¹þ¤ó¤Ç¤ë¤¿¤á¤À¤È»×¤ï¤ì¤Þ¤¹¤¬¡¢¾Ü¤·¤¤Æ°ºî¤Ï¤ï¤«¤ê¤Þ¤»¤ó¡£

(ÃΤäƤë¿Í¤¬¤¤¤¿¤é¶µ¤¨¤Æ¤Û¤·¤¤)



¤³¤Î¥Æ¥¹¥È¼ê½ç¤Ç¤Ï¡¢¤è¤¦¤¹¤ë¤Ëfind¤ò»È¤Ã¤Æ¡¢readdir¤·¤Þ¤¯¤ë¤Ã¤Æ¥Æ¥¹¥È¤Ê¤Î¤Ç¡¢
°ì²óÌܤÏdcache¤Èicache¤¬¶õ¤Ê¤Î¤Ç¡¢Á´Éô¥Ç¥£¥¹¥¯¾å¤«¤éÆÉ¤Þ¤Ê¤¤¤È¤¤¤±¤Ê¤¤¡£
¤À¤±¤É¡¢Æó²óÌܰʹߤϥá¥â¥êÁàºî¤Ç¤¹¤à¤«¤é¤À¤È»×¤¦¡£


YOU FAIL ÁêÂÐŪ¤ÊÂç¾®¤¬½ÅÍפǤ¹¡ª¡¡¥é¥ó¥­¥ó¥°¡ª



linux | ¡Ú2008-06-09(Mon) 02:21:43¡Û | Trackback:(2) | Comments:(2)
¥³¥á¥ó¥È
ÌäÂê¤Îµ­»ö¤ÎÉ®¼Ô¤Ç¤¹¡£¼«Ê¬¤Ç¤âÈæ³ÓŪ¥Þ¥·¤È»×¤Ã¤Æ¤¿Éôʬ¤Ë¤â¤³¤ó¤Ê½ÅÂç¤Ê¥ß¥¹¤¬¤¢¤ë¤È¤Ï¡Ä
write»þ¤Îatime¤Ë¤Ä¤¤¤Æ¤Ïº£¤Ë»ê¤ë¤Þ¤Ç´°Á´¤Ë¸í²ò¤·¤Æ¤Þ¤·¤¿
¤­¤Á¤ó¤È¥³¡¼¥É¤ò¸«¤ÆÍý²ò¤·¤Ê¤¤¤È¥À¥á¤Ç¤¹¤Í¡£È¿¾Ê¤Ç¤¹
2008-06-09 ·î 13:07:40 | URL | Ëö°ÂÂÙ»° #- [ ÊÔ½¸]

´ÉÍý¿Í¤Ç¤¹¡£¤É¤â¤É¤â
£´£°£´ £Â£ì£ï£ç £Î£ï£ô¡¡£Æ£ï£õ£î£ä¤µ¤ó¤¬Èó¾ï¤Ë¶½Ì£¿¼¤¤µ­»ö¤ò¥È¥é¥Ã¥¯¥Ð¥Ã¥¯¤·¤Æ¤¯¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢¹ç¤ï¤»¤ÆÆÉ¤à¤Î¤¬¥ª¥¹¥¹¥á¤Ç¤¹¡£
ÊÙ¶¯¤Ë¤Ê¤ê¤Þ¤¹¡£
2008-06-09 ·î 18:55:30 | URL | kosaki #- [ ÊÔ½¸]
°Ê²¼¤ËÂФ·¤Æ¡¢ Linux¥Á¥å¡¼¥Ë¥ó¥°¡¡Âè1ÉôÂè1²ó¡¡¥Õ¥¡¥¤¥ë¡¦¥¢¥¯¥»¥¹¤ò¹â®²½¡§ITpro ³×Ì¿¤ÎÆü¡¹¡ª ITPro¤ÎLinux¥Á¥å¡¼¥Ë¥ó¥°¤Îµ­»ö¤¬¤Ò¤É¤¤»ö¤Ë¤Ê¤Ã¤Æ¤¤¤ë·ï¤Ë¤Ä¤¤¤Æ ¤¢¤Þ¤ê¤Ë¹ó¤¤¤Î¤Çdis¤ëµ­»ö¤ò½ñ¤³¤¦¤«¤È»×¤Ã¤¿¤é¡¢ËöÈø¤Ë¾®¤µ¤¯ ½Ðŵ¡§Æü·ÐLinux 2002ǯ4·î¹...
¡Ú2008-06-09 Mon 15:47:30¡Û | 404 Blog Not Found
404 Blog Not Found ¤µ¤ó¤¬¥È¥é¥Ã¥¯¥Ð¥Ã¥¯¤¯¤ì¤Æ¤ë¤ß¤¿¤¤¤À¡£ ¤¹¤Ð¤é¤·¤¤¤Þ¤È¤áµ­»ö¤ò¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤¹¡£ ¤»¤Ã¤«¤¯¤Ê¤Î¤Ç¤ªÎ餬¤Æ¤é¡¢¥È¥é¥Ð...
¡Ú2008-06-09 Mon 18:47:51¡Û | ³×Ì¿¤ÎÆü¡¹¡ª