èšäºã®ç¿»èš³ã¯ã³ãŒã¹éå§åå€ã«æºåãããŸãã
ã«ãŒãã«ãã¥ãŒãã³ã°ã«é¢ãã Gluster ã®æšå¥šäºé ãšããã®å¿ èŠããããã©ããã«ã€ããŠãå®æçã«çåãçããŸãã
ãã®ãããªããŒãºãçããããšã¯ã»ãšãã©ãããŸããã ã»ãšãã©ã®ã¯ãŒã¯ããŒãã§ãã«ãŒãã«ã¯éåžžã«è¯å¥œã«ããã©ãŒãã³ã¹ããŸãã æ¬ ç¹ããããŸããã æŽå²çã«ãLinux ã«ãŒãã«ã¯ãããã©ãŒãã³ã¹ãåäžãããäž»ãªæ¹æ³ãšããŠã®ãã£ãã·ã¥ãªã©ãæ©äŒãããã°å€§éã®ã¡ã¢ãªãæ¶è²»ããããšãããšããªãã£ãã
ã»ãšãã©ã®å Žåãããã¯åé¡ãªãæ©èœããŸãããè² è·ãé«ãå Žåã¯åé¡ãçºçããå¯èœæ§ããããŸãã
åœç€Ÿã«ã¯ãCADãEDA ãªã©ãé«è² è·ã«ãªããšé床ãäœäžãå§ãããã¡ã¢ãªã倧éã«äœ¿çšããã·ã¹ãã ã«é¢ããè±å¯ãªçµéšããããŸãã ãŸããGluster ã§åé¡ãçºçããããšããããŸããã ã¡ã¢ãªäœ¿çšéãšãã£ã¹ã¯é 延ãäœæ¥éã泚ææ·±ã芳å¯ããçµæãéè² è·ã巚倧㪠iowaitãã«ãŒãã« ãšã©ãŒ (ã«ãŒãã« oops)ãããªãŒãºãªã©ãçºçããŠããããšãããããŸããã
ãã®èšäºã¯ãããŸããŸãªç¶æ³ã§å®è¡ãããå€ãã®ãã¥ãŒãã³ã°å®éšã®çµæã§ãã ãããã®ãã©ã¡ãŒã¿ãŒã®ãããã§ãå šäœçãªå¿çæ§ãåäžããã ãã§ãªããã¯ã©ã¹ã¿ãŒãå€§å¹ ã«å®å®ããŸããã
ã¡ã¢ãªã®ãã¥ãŒãã³ã°ã«é¢ããŠã¯ããŸãä»®æ³ã¡ã¢ãª ãµãã·ã¹ãã (VMãä»®æ³ã¡ã¢ãª) ã«æ³šç®ããŸããããã«ã¯ãæ··ä¹±ãæãå¯èœæ§ã®ããå€æ°ã®ãªãã·ã§ã³ããããŸãã
vm.swappiness
ãã©ã¡ãŒã¿ãŒ vm.swappiness
ã«ãŒãã«ã RAM ãšæ¯èŒããŠã¹ã¯ãã (ã¹ã¯ãããããŒãžã³ã°) ãã©ãã ã䜿çšãããã決å®ããŸãã ãœãŒã¹ã³ãŒãã§ã¯ãããããããã¡ã¢ãªãçãåŸåããšãå®çŸ©ãããŠããŸãã ã¹ã¯ããæ§ãé«ããšããããšã¯ãã«ãŒãã«ãããããããããŒãžãããã¹ã¯ããããåŸåãããããšãæå³ããŸãã ã¹ã¯ãããŒå€ãäœããšãã®éãæå³ããã«ãŒãã«ãã¡ã¢ãªããããŒãžã³ã°ããéãå°ãªããªããŸãã ã€ãŸããå€ã倧ããã»ã© vm.swappiness
ãã·ã¹ãã ãã¹ã¯ããã䜿çšããéãå€ããªããŸãã
èšå€§ãªããŒã¿ ãããã¯ã RAM ã«ããŒãããã³ã¢ã³ããŒãããããããã¹ã¯ããã³ã°ãå€éã«äœ¿çšããããšã¯æãŸãããããŸããã å€ãã®äººã swapiness å€ã倧ããããã¹ãã ãšäž»åŒµããŸãããç§ã®çµéšã§ã¯ããããã0ãã«èšå®ãããšããã©ãŒãã³ã¹ãåäžããŸãã
ããã§è©³çŽ°ãèªãããšãã§ããŸã -
ãã ããç¹°ãè¿ãã«ãªããŸããããããã®èšå®ã¯æ éã«é©çšããç¹å®ã®ã¢ããªã±ãŒã·ã§ã³ããã¹ãããåŸã«ã®ã¿é©çšããå¿ èŠããããŸãã è² è·ã®é«ãã¹ããªãŒãã³ã° ã¢ããªã±ãŒã·ã§ã³ã®å Žåããã®ãã©ã¡ãŒã¿ã¯ã0ãã«èšå®ããå¿ èŠããããŸãã ã0ãã«å€æŽãããšã·ã¹ãã ã®å¿çæ§ãåäžããŸãã
vm.vfs_cache_pressure
ãã®èšå®ã¯ããã£ã¬ã¯ããªããã³ inode ãªããžã§ã¯ã (dentry ããã³ inode) ããã£ãã·ã¥ããããã«ã«ãŒãã«ã«ãã£ãŠæ¶è²»ãããã¡ã¢ãªãå¶åŸ¡ããŸãã
ããã©ã«ãå€ã® 100 ã§ã¯ãã«ãŒãã«ã¯ãããŒãžãã£ãã·ã¥ããã³ã¹ã¯ããã£ãã·ã¥ã«å¯ŸããŠãå ¬å¹³ãªãåºæºã§ dentry ãã£ãã·ã¥ãš i ããŒã ãã£ãã·ã¥ã解æŸããããšããŸãã vfs_cache_pressure ãäžãããšãã«ãŒãã«ã¯ dentry ãã£ãã·ã¥ãš i ããŒã ãã£ãã·ã¥ãä¿æããŸãã å€ãã0ãã®å Žåãã«ãŒãã«ã¯ã¡ã¢ãªäžè¶³ã®ãã dentry ãã£ãã·ã¥ãš i ããŒã ãã£ãã·ã¥ããã©ãã·ã¥ããŸãããããã«ãããã¡ã¢ãªäžè¶³ãšã©ãŒãçºçãããããªããŸãã vfs_cache_pressure ã 100 ãã倧ãããããšãã«ãŒãã«ã¯ dentry ãš i ããŒãã®ãã©ãã·ã¥ãåªå ããŸãã
GlusterFS ã䜿çšããå Žåã倧éã®ããŒã¿ãšå€æ°ã®å°ããªãã¡ã€ã«ãæã€å€ãã®ãŠãŒã¶ãŒã¯ãinode/dentry ãã£ãã·ã¥ã«ãããµãŒããŒäžã®å€§éã® RAM ã容æã«äœ¿çšããå¯èœæ§ããããã«ãŒãã«ãã·ã¹ãã äžã®ããŒã¿æ§é ãåŠçããå¿ èŠããããããããã©ãŒãã³ã¹ã®äœäžã«ã€ãªããå¯èœæ§ããããŸãã 40GBã®ã¡ã¢ãªãæèŒã ãã®å€ã 100 ãã倧ããèšå®ãããšãå€ãã®ãŠãŒã¶ãŒãããå ¬å¹³ãªãã£ãã·ã¥ãå®çŸããã«ãŒãã«ã®å¿çæ§ãåäžããããã«ãªããŸããã
vm.dirty_background_ratio ãš vm.dirty_ratio
æåã®ãã©ã¡ãŒã¿ (vm.dirty_background_ratio
) ããŒã㣠ããŒãžãå«ãŸããã¡ã¢ãªã®å²åã決å®ããŸãããã®å²åã«éãããšãããã¯ã°ã©ãŠã³ãã§ããŒã㣠ããŒãžããã£ã¹ã¯ã«ãã©ãã·ã¥ãå§ããå¿
èŠããããŸãã ãã®ããŒã»ã³ããŒãžã«éãããŸã§ãããŒãžã¯ãã£ã¹ã¯ã«ãã©ãã·ã¥ãããŸããã ãŸãããªã»ãããéå§ããããšãå®è¡äžã®ããã»ã¹ãäžæããããšãªãããã¯ã°ã©ãŠã³ãã§å®è¡ãããŸãã
XNUMX çªç®ã®ãã©ã¡ãŒã¿ (vm.dirty_ratio
) ã¯ã匷å¶ãã©ãã·ã¥ãéå§ãããåã«ããŒã㣠ããŒãžã«ãã£ãŠå æã§ããã¡ã¢ãªã®å²åãå®çŸ©ããŸãã ãã®ãããå€ã«éãããšããã¹ãŠã®ããã»ã¹ãåæ (ãããã¯) ã«ãªããèŠæ±ãã I/O ãå®éã«å®äºããããŒã¿ããã£ã¹ã¯äžã«çœ®ããããŸã§ç¶è¡ã§ããªããªããŸãã I/O ãå€ãå ŽåãããŒã¿ ãã£ãã·ã¥ãååšãããI/O ãå®è¡ãããã¹ãŠã®ããã»ã¹ã I/O ãåŸ
æ©ããŠãããã¯ããããããåé¡ãçºçããŸãã ããã«ãããå€æ°ã®ããã»ã¹ããã³ã°ããé«è² è·ãçºçããã·ã¹ãã ãäžå®å®ã«ãªããããã©ãŒãã³ã¹ãäœäžããŸãã
ãããã®èšå®ãæžãããšãããŒã¿ãããé »ç¹ã«ãã£ã¹ã¯ã«ãã©ãã·ã¥ãããRAM ã«ä¿åãããªããªããŸãã ããã¯ã45 ïœ 90 GB ã®ããŒãž ãã£ãã·ã¥ããã£ã¹ã¯ã«ãã©ãã·ã¥ããããšãéåžžã§ãããããããã³ããšã³ã ã¢ããªã±ãŒã·ã§ã³ã«å€§ããªåŸ ã¡æéãçºçããå šäœçãªå¿çæ§ãšå¯Ÿè©±æ§ãäœäžãããã¡ã¢ãªã倧éã«äœ¿çšããã·ã¹ãã ã«åœ¹ç«ã¡ãŸãã
"1" > /proc/sys/vm/pagecache
ããŒãž ãã£ãã·ã¥ã¯ããã¡ã€ã«ããã³å®è¡å¯èœããã°ã©ã ã®ããŒã¿ãä¿åãããã£ãã·ã¥ã§ããã€ãŸãããããã¯ãã¡ã€ã«ãŸãã¯ããã㯠ããã€ã¹ã®å®éã®å 容ãå«ãããŒãžã§ãã ãã®ãã£ãã·ã¥ã¯ããã£ã¹ã¯ã®èªã¿åãåæ°ãæžããããã«äœ¿çšãããŸãã å€ã1ãã¯ãRAM ã® 1% ããã£ãã·ã¥ã«äœ¿çšãããRAM ããã®èªã¿åãããããã£ã¹ã¯ããã®èªã¿åãã®æ¹ãå€ããªãããšãæå³ããŸãã ãã®èšå®ãå€æŽããå¿ èŠã¯ãããŸããããããŒãž ãã£ãã·ã¥ã®å¶åŸ¡ã«äžå®ãããå Žåã¯ããã®èšå®ã䜿çšã§ããŸãã
"ãããã©ã€ã³" > /sys/block/sdc/queue/scheduler
I/O ã¹ã±ãžã¥ãŒã©ã¯ãèªã¿åããã¥ãŒãšæžã蟌ã¿ãã¥ãŒãåŠçãã Linux ã«ãŒãã« ã³ã³ããŒãã³ãã§ãã çè«çã«ã¯ãã¹ããŒã RAID ã³ã³ãããŒã©ãŒã«ã¯ãnoopãã䜿çšããæ¹ãè¯ãã§ããLinux ã¯ãã£ã¹ã¯ã®ç©ççãªãžãªã¡ããªã«ã€ããŠäœãç¥ããªãããããã£ã¹ã¯ã®ãžãªã¡ããªãããç¥ã£ãŠããã³ã³ãããŒã©ãŒã«ãªã¯ãšã¹ããã§ããã ãæ©ãåŠçãããã»ããå¹ççã§ããå¯èœã ãã ãããæéãã䜿çšãããšããã©ãŒãã³ã¹ãåäžããããã§ãã ã¹ã±ãžã¥ãŒã©ã®è©³çŽ°ã«ã€ããŠã¯ãLinux ã«ãŒãã« ãœãŒã¹ ã³ãŒãã®ããã¥ã¡ã³ããåç
§ããŠãã ããã linux/Documentation/block/*osched.txt
ã ãŸããæ··åæäœ (å€æ°ã®æžã蟌ã¿) äžã®èªã¿åãã¹ã«ãŒãããã®å¢å ã確èªããŸããã
"256" > /sys/block/sdc/queue/nr_requests
ã¹ã±ãžã¥ãŒã©ã«æž¡ãããåã®ãããã¡å ã® I/O ãªã¯ãšã¹ãã®æ°ã äžéšã®ã³ã³ãããŒã©ãŒã®å éšãã¥ãŒ ãµã€ãº (queue_ Depth) 㯠I/O ã¹ã±ãžã¥ãŒã©ãŒã® nr_requests ããã倧ãããããI/O ã¹ã±ãžã¥ãŒã©ãŒããªã¯ãšã¹ããé©åã«åªå é äœä»ãããŠããŒãžã§ããå¯èœæ§ã¯ã»ãšãã©ãããŸããã ãããã©ã€ã³ããã³ CFQ ã¹ã±ãžã¥ãŒã©ã®å Žåãnr_requests ãã³ã³ãããŒã©ã®å éšãã¥ãŒã® 2 åã§ããå Žåã«é©ããŠããŸãã ãªã¯ãšã¹ããããŒãžããŠäžŠã¹æ¿ãããšãé«è² è·æã®ã¹ã±ãžã¥ãŒã©ã®å¿çæ§ãåäžããŸãã
echo "16" > /proc/sys/vm/page-cluster
page-cluster ãã©ã¡ãŒã¿ãŒã¯ãäžåºŠã«ã¹ã¯ããã«æžã蟌ãŸããããŒãžã®æ°ãå¶åŸ¡ããŸãã äžèšã®äŸã§ã¯ãRAID ã¹ãã©ã€ã ãµã€ãº 16 KB ã«åŸã£ãŠãå€ã¯ã64ãã«èšå®ãããŸãã swappiness = 0 ã§ã¯æå³ããããŸããããswappiness ã 10 ãŸã㯠20 ã«èšå®ãããšãRAID ã¹ãã©ã€ã ãµã€ãºã 64K ã®å Žåã«ãã®å€ã䜿çšãããšåœ¹ã«ç«ã¡ãŸãã
blockdev --setra 4096 /dev/<
éçºè
å>
(-sdbãhdcããŸã㯠dev_mapper)
å€ãã® RAID ã³ã³ãããŒã©ãŒã®ããã©ã«ãã®ããã㯠ããã€ã¹èšå®ã§ã¯ãããã©ãŒãã³ã¹ãäœäžããããšããããããŸãã äžèšã®ãªãã·ã§ã³ãè¿œå ãããšã4096 * 512 ãã€ãã®ã»ã¯ã¿ãŒã®å èªã¿ãèšå®ãããŸãã å°ãªããšããã¹ããªãŒãã³ã°æäœã®å Žåãã«ãŒãã«ã I/O ãæºåããããã«äœ¿çšããæéäžã«ããªã³ããã ãã£ã¹ã¯ ãã£ãã·ã¥ãå èªã¿ã§åããããšã«ãã£ãŠé床ãåäžããŸãã ãã£ãã·ã¥ã«ã¯ã次åã®èªã¿åãæã«èŠæ±ãããããŒã¿ãå«ããããšãã§ããŸãã ããªãã§ãããå€ããããšãæœåšçã«æçšãªãã£ã¹ã¯æéã䜿ãæããããããã£ãã·ã¥ã®å€ã«ããŒã¿ãããŒãããããããšã倧ããªãã¡ã€ã«ã®ã©ã³ãã I/O ãç¡å¹ã«ãªãå¯èœæ§ããããŸãã
以äžã«ããã¡ã€ã« ã·ã¹ãã ã¬ãã«ã§ã®æšå¥šäºé ãããã«ããã€ã瀺ããŸãã ãããããããã¯ãŸã ãã¹ããããŠããŸããã ãã¡ã€ã«ã·ã¹ãã ãã¹ãã©ã€ãã®ãµã€ãºãšã¢ã¬ã€å ã®ãã£ã¹ã¯ã®æ°ãèªèããŠããããšã確èªããŠãã ããã ããšãã°ããã㯠5 ã€ã®ãã£ã¹ã¯ (ããªãã£ã« 64 ã€ã®ãã£ã¹ã¯ã䜿çšããããããå®éã«ã¯ XNUMX ã€) ãããªã XNUMXK ã¹ãã©ã€ãã® RaidXNUMX ã¢ã¬ã€ã§ãããšããŸãã ãããã®æšå¥šäºé ã¯çè«çãªä»®å®ã«åºã¥ããŠãããRAID å°é家ã«ããããŸããŸãªããã°/èšäºãããŸãšããããŠããŸãã
-> ext4 fs, 5 disks, 64K stripe, units in 4K blocks
mkfs -text4 -E stride=$((64/4))
-> xfs, 5 disks, 64K stripe, units in 512-byte sectors
mkfs -txfs -d sunit=$((64*2)) -d swidth=$((5*64*2))
倧ããªãã¡ã€ã«ã®å Žåã¯ãäžèšã®ã¹ãã©ã€ã ãµã€ãºãå¢ããããšãæ€èšããŠãã ããã
èŠåïŒ äžã§èª¬æããããšã¯ãã¹ãŠãäžéšã®çš®é¡ã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯éåžžã«äž»èŠ³çã§ãã ãã®èšäºã¯ãé¢é£ã¢ããªã±ãŒã·ã§ã³ã®äºåã®ãŠãŒã¶ãŒ ãã¹ãããªããã°ãæ¹åãä¿èšŒãããã®ã§ã¯ãããŸããã ã·ã¹ãã å šäœã®å¿çæ§ãåäžãããå¿ èŠãããå ŽåããŸãã¯çŸåšã®åé¡ã解決ããå Žåã«ã®ã¿äœ¿çšããŠãã ããã
è¿œå ã®è³æ
dom.as/2008/02/05/linux-io-schedulers www.nextre.it/oracledocs/oraclemyths.html llkml.org/lkml/2006/11/15/40 misterd77.blogspot.com/2007/11/3ware-hardware-raid-vs-linux-software.html
ç¶ããèªã
åºæïŒ habr.com