1. I/O scheduler ¶
- Çϵåµð½ºÅ©¿¡ ÃÖÀûÈµÈ ºí·° µð¹ÙÀ̽º ½ºÄÉÁÙ¸µ ¾Ë°í¸®ÁòÀ» ÀǹÌÇÑ´Ù.
- SATA controller ¶Ç´Â ÀϹÝÀûÀÎ HDD diskÀÇ controller¸¦ ÀÌ¿ëÇÏ´Â SSD Á¦Ç°ÀÇ °æ¿ì, NOOP¸¦ ¼±ÅÃÇϸé Ź¿ùÇÑ ¼º´É Çâ»óÀÌ ÀÖ´Ù.
2. ¹®Á¦ÀÇ °í¹Î ¶
- Writes-Starving-Reads
- Writeµ¿ÀÛÀº ¹öÆÛ¿¡ ¹Ð¾î³Ö°í ¹öÆÛ¿¡¼ Merge ¹× Sort¸¦ ÇÏ¿© ÀÏ·ÃÀÇ ¿¬¼ÓµÈ Writeµ¿ÀÛÀ¸·Î 󸮵ɼö ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ ÀÌ °úÁ¤¿¡¼ Readµ¿ÀÛÀÌ ³¢¾îµé°Ô µÇ¸é I/O¿äû¼ø¼¿¡ ÀÔ°¢ÇÏ¿© ó¸®µÇ¸é¼ ¿¬¼ÓÀûÀÎ Readµ¿ÀÛÀ» ÇÏÁö ¾Ê°Ô µÇ°í ÀÚÁÖ SeekÇÏ¸é¼ ¼º´ÉÀÌ ±Ø´ëÈ µÇ±â Èûµé°Ô µË´Ï´Ù. ÀÌ·¯ÇÑ I/O SchedulerÀÇ µ¿ÀÛ¿¡ ÀÇÇÑ Çö»óÀ» "Writes-starving-reads"¶ó°í ÇÕ´Ï´Ù.
- Effects of High Read Latency
- ³í¸®ÀûÀ¸·Î ¿¬¼ÓÀûÀÎ Ä¿´Ù¶õ Data¸¦ ReadÇÏ´Â Áß¿¡ ÀÛÀº Data¸¦ Àд µ¿ÀÛÀÌ ³¢¾îµé°Ô µÇ¸é ÀÛÀº Data¸¦ ReadÇϴ°Ϳ¡ ´ëÇÏ¿© ¾î¶²°Í¿¡ ¼º´ÉÀÇ ÃÊÁ¡À» ¸ÂÃç¾ß ÇÏ´ÂÁö¿¡ ´ëÇÑ °¥µîÀÇ ¹®Á¦°¡ »ý±é´Ï´Ù. ÀÌ°ÍÀ» "Effects of High Read Latency"¶ó°í ÇÕ´Ï´Ù.
3. I/O scheduler Á¾·ù ¶
- Linus Elevator
- Ä¿³Î 2.6¿¡¼´Â deadlineÀ¸·Î ÁøÈÇÔ. 2.4 ±îÁö¸¸ »ç¿ëµÊ. deadlineÀ» ¼³¸íÇϱâ À§ÇØ ±â·Ï
- Å¥¿¡¼ ¿äûÀ» (block number ¼øÀ¸·Î) Insertion sort ÇÏ´Ù°¡ age°¡ ¿À·¡ µÈ ¿äûÀÌ ÀÖÀ¸¸é ±×°ÅºÎÅÍ Ã³¸®ÇÏ´Â ¹æ½ÄÀÌ´Ù.
- Completely Fair Queuing (CFQ)
- 񃧯 I/O scheduler
- CFQ ½ºÄÉÁÙ·¯´Â ±¤¹üÀ§ÇÑ ÀÀ¿ë ÇÁ·Î±×·¥°ú I/O ½Ã½ºÅÛ ¼³°è¿¡ ÃÖ»óÀÇ ¼º´ÉÀ» Á¦°øÇϱ⠶§¹®¿¡ ±âº» ½ºÄÉÁÙ·¯·Î ¼±ÅÃÀÌ µÇ¾ú´Ù. 16°³ÀÇ CPU¸¦ °¡Áö°í ÀÖ°í, Ultra SCSI¿Í Fiber channel·Î ±¸¼ºµÈ 2~64°³ÀÇ LUNÀ» °¡Áø ½Ã½ºÅÛ¿¡¼ CFQ´Â Ź¿ùÇÑ ¼º´ÉÀ» ¹ßÈÖÇÑ °ÍÀ¸·Î ¾Ë·ÁÁ® ÀÖ´Ù. °Ô´Ù°¡ CFQ´Â ´Ù¸¥ I/O subsystemÀÇ ¼º´É°ú ÀÏÄ¡ÇÒ ¼ö ÀÖµµ·Ï /proc/sys/scsi subsystem¿¡ ÀÖ´Â nr_requests ÆĶó¹ÌÅ͸¦ Á¶Á¤ÇÏ¿© ½±°Ô ÃÖÀûÈ ÇÒ ¼ö ÀÖ´Ù.
- CFQ(Complete Fair Queuing)´Â °¢ ÇÁ·Î¼¼½º ¸¶´Ù ÀÛ¾÷ Å¥¸¦ °¡Áö°í ÀÖ°í À̰͵éÀÌ round robin¹æ½ÄÀ¸·Î µ¹¸ç Á¤ÇØÁø time slice ³»¿¡¼ ÀÛ¾÷À» ¼öÇàÇÏ°Ô µÈ´Ù. time slice¾È¿¡ ÀÛ¾÷À» ¸ðµÎ ³¡³»°Ô µÇ¾îµµ 10ms Á¤µµ¸¦ Ãß°¡·Î ±â´Ù¸®¸ç Ȥ½Ã³ª ÀÖÀ» I/O ÀÛ¾÷À» ´ë±âÇÏ´Ù°¡ ¾Èµé¾î¿À¸é ´Ù¸¥ ÇÁ·Î¼¼½ºÀÇ Å¥·Î À̵¿ÇÑ´Ù. °¢ Å¥¿¡¼´Â synchronous ¿äûÀÌ asynchronousº¸´Ù ¿ì¼±¼øÀ§¸¦ °¡Áö°í ÁøÇàµÇ¾î writes-starving-reads ¹®Á¦¸¦ ÇØ°áÇÑ´Ù.
- Deadline
- Deadline ½ºÄÉÁÙ·¯´Â real-time °°Àº single I/O ó·³ ¿¬¼ÓµÈ read¸¦ ºü¸£°í È¿À²ÀûÀ¸·Î ó¸®Çϱâ À§ÇÏ¿© ´ë±â ½Ã°£À» °¡Áö´Â ¹æ½ÄÀÌ´Ù. Single I/O ȯ°æ¿¡¼´Â ºü¸£Áö¸¸ multip HBA ¶Ç´Â ÆÄÀϽýºÅÛ°£ÀÇ Æ®·£Á§¼Ç¿¡´Â Ç×»ó ÃÖ»óÀÇ ¼±ÅÃÀÌ µÉ ¼ö´Â ¾ø´Ù.
- Linux ElevatorÀÇ ÀÛ¾÷ Å¥¿Ü¿¡ º°µµÀÇ read/write Å¥¸¦ µÐ´Ù. ÀÛ¾÷ Å¥¿¡´Â ¿äûÀÌ block ¹øÈ£ ¼ø¼·Î Á¤·ÄµÇ¾î ÀÖ°í, read/writeÅ¥´Â FIFO·Î (¿äû µé¾î¿Â ¼ø¼´ë·Î) µé¾î°£´Ù. I/O Scheduler´Â ÀÛ¾÷ Å¥¿¡ Á¤·ÄµÈ ¿äûµéÀ» °¡Áö°í ÀÛ¾÷À» ÇÏ´Ù°¡ expiration time¿¡ ³ÑÀº ¿äûÀÌ ¹ß°ßµÇ¸é ±× ¿äûÀ» °¡Áö°í ÀÖ´Â read(ȤÀº write)Å¥¿¡°¡¼ ÀÛ¾÷À» ÁøÇàÇÑ´Ù. ÀϹÝÀûÀ¸·Î read Å¥´Â expiration timeÀÌ 500ms·Î ª°í write Å¥´Â 5ÃÊÁ¤µµ·Î ÁØ´Ù.
- Anticipatory
- Ãßõ ´ë»ó
- Á¦ÇÑµÈ I/O ¼³Á¤À» °¡Áö°í ÀÖ´Â °æ¿ì
- 1 ¶Ç´Â 2°³ÀÇ LUN¸¸ °¡Áö°í ÀÕ´Â ÀÛÀº ½Ã½ºÅÛ
- I/O ´ë±â½Ã°£ º¸´Ù ´ëÈÇü ÀÀ´ä½Ã°£¿¡ ¿ì¼±±ÇÀ» ÁÖ´Â °ÍÀÌ À¯¸®ÇÒ °æ¿ì (´ëºÎºÐÀÇ workstationµé..)
- ¿¬¼ÓµÈ ºÎºÐÀÇ read ¿äûÀÇ °æ¿ì µð½ºÅ©ÀÇ Çì´õ´Â ÀÌ¹Ì ´Ù¸¥ À§Ä¡·Î À̵¿ÇØ ÀÖ´Â »óÅ¿¡¼ ´Ù½Ã ÀÌÀüÀÇ À§Ä¡·Î À̵¿ÇÏ¿© ÀÛ¾÷À» ¼öÇàÇÏ°Ô µÇ´Â ³¶ºñ°¡ ÀÖ´Ù. ¶§¹®¿¡ ¿¬¼ÓÀûÀÎ read¸¦ À§ÇØ ÇѹøÀÇ read°¡ ¸¶ÃÄÁö¸é ÃÖ´ë 6ms ±îÁö ¾Æ¹«Àϵµ ¼öÇàÇÏÁö ¾Ê°í (ÇìµåÀÇ À§Ä¡¸¦ À̵¿ÇÏÁö ¾Ê°í) ´ë±âÇؼ ¿¬¼ÓÀûÀÎ readÀÛ¾÷½Ã ½Ã°£À» ¾Æ³¢´Â ¹æ½ÄÀÇ ½ºÄÉÁ층À» anticipatory I/O scheduler¶ó°í ÇÑ´Ù.
- NOOP
- ºí·° ¹øÈ£ ¼øÀ¸·Î Á¤·ÄÀº ÇÏÁö ¾Ê°í merging¸¸ ÇÏ´Â ½ºÄÉÁì·¯ ÀÌ´Ù. Hard Disk ¹æ½ÄÀÇ controller (sata/sas)¸¦ »ç¿ëÇÏ´Â SSDÀÇ °æ¿ì, ÀÌ ¹æ½ÄÀ» ¼±ÅÃÇϵµ·Ï ÇÑ´Ù.
- º°µµ controller¸¦ °¡Áö°í ÀÖÀ» °æ¿ì, driver´Ü¿¡¼ ÀÌ¹Ì ÃÖÀûÈ ¾Ë°í¸®ÁòÀ» °¡Áö°í Àֱ⠶§¹®¿¡ ½Å°æ¾µ ÇÊ¿ä ¾øÀ½. (¿¹.. Fusion IO)
|
|