# # Kernel Tunning ¹æ¹ý, IPC Parameter Á¤¸® # Kernel Tunning ¹× IPC Parameter ¡á Solaris2.x¿¡¼­ÀÇ Kernel tuning¿¡ ´ëÇØ ¾Ë¾Æº¸°Ú½À´Ï´Ù. Solaris 2.x´Â solaris1.x¿Í ºñ±³ÇÒ ¶§ dynamic kernel ±¸Á¶¸¦ °®±â ¶§¹®¿¡ tuning¿¡ ÀÖ¾î Á÷Á¢ kernelÀ» compileÇÏÁö ¾Ê°í ºÎÆýÿ¡ ÇØ´çµÇ´Â moduleÀ» loadingÇϵµ·Ï µÇ¾îÀÖ½À´Ï´Ù. ¡á¸ñÂ÷ 1. Kernel tuningÀÇ ÀÇÀÇ 2. "maxusers"¿¡ ÀÇÇØ º¯µ¿µÇ´Â parameterÀÇ °ª¼³Á¤ ¹æ¹ý 3. Solaris 2.x¿¡¼­ÀÇ kernel parameter º¯°æ 4. ±âŸ TuningÀÌ °¡´ÉÇÑ parameterµé 1) Buffer Cache Parameters 2) Streams Parameters 3) Interprocess Communication (IPC) Parameters 4) TPI Loopback Pseudo-driver Parameters 5) Miscellaneous Parameters 1. Kernel tuningÀÇ ÀÇÀÇ ¡Ü Solaris 2.x¿¡¼­ÀÇ kernelÀº booting½Ã ÀÚµ¿ÀûÀ¸·Î loadµÇ¸ç recompilingÀÇ ´Ü°è¸¦ °ÅÄ¡Áö ¾Ê°í µ¿ÀûÀ¸·Î ±¸µ¿µÈ´Ù. µû¶ó¼­ Solaris2.x¿¡¼­´Â ÇÊ¿äÇÑ °æ¿ì¿¡¸¸ kernelÀÇ resource¸¦ ÂüÁ¶ÇÏ°Ô µÈ´Ù. ¶ÇÇÑ Æ¯º°ÇÑ »óȲÀÌ ¾Æ´Ñ °æ¿ìÀÇ Solaris2.x¿¡¼­ÀÇ kernel tuningÀº »ï°¡ÇÏ´Â °ÍÀÌ ÁÁ´Ù. ¡Ü ¶ÇÇÑ Solaris2.x¿¡¼­ÀÇ kernel tuningÀº "maxusers"ÀÇ ¼¼ÆÃÀ» ¾î¶»°Ô Çߴ°¡ ÇÏ´Â °Í¿¡ ÀÇÇØ ´ëºÎºÐÀÇ parameterµéÀÇ °ªÀÌ ÀÚµ¿ÀûÀ¸·Î °è»êµÇ¸ç /etc/system file¿¡ ÇØ´çµÇ´Â parameter settingÀ» ÇÔÀ¸·Î½á booting½Ã kernelÀÌ ÀÌ È­ÀÏÀ» ÂüÁ¶ÇÏ¿© kernel »óÀ¸·Î °­Á¦ÀûÀÎ loadingÀ» ÇϰԵȴÙ. ¡Ü °á·ÐÀûÀ¸·Î Solaris 2.x¿¡¼­ÀÇ kernel tuningÀº ÇØ´çµÇ´Â kernel parameterÀÇ °ª¿¡ ´ëÇÑ Á¤È®ÇÑ ÀÌÇظ¦ ¹ÙÅÁÀ¸·Î ÁøÇàÇÒ ¼ö°¡ ÀÖÀ¸¸ç ½Ã½ºÅÛ°ú Á¶È­¸¦ ÀÌ·çÁö ¾Ê´Â parameter °ªÀ» ¼³Á¤½Ã¿¡´Â ¿ÀÈ÷·Á ½Ã½ºÅÛÀÇ ¼º´ÉÀúÇϸ¦ °¡Á®¿Ã ¼öµµ ÀÖ´Ù´Â °ÍÀ» ¸í½ÉÇØ¾ß ÇÒ °ÍÀÌ´Ù. 2. "maxusers"¿¡ ÀÇÇØ º¯µ¿µÇ´Â parameterÀÇ °ª¼³Á¤ ¹æ¹ý Kernel Table Variable Default Setting Inode ufs_ninode max_nprocs + 16 + maxusers + 64 Name Cache ncsize max_nprocs + 16 + maxusers + 64 Process max_nprocs 10 + 16*maxusers Quota table ndquot (maxusers * NMOUNT)/4 + max_nprocs user process maxuprc max_nprocs - 5 pseudo devcies pt_cnt default 48 3. Solaris 2.x¿¡¼­ÀÇ kernel parameter º¯°æ ¡Û solaris 2.x¿¡¼­ÀÇ kernel tuningÀº /etc/system file¿¡¼­ ÇØ´çµÇ´Â parameter¸¦ º¯°æÇÔÀ¸·Î½á ¼öÁ¤ÀÌ °¡´ÉÇÏ´Ù. ´ÙÀ½ÀÇ ¿¹Á¦¸¦ Âü°í·Î maxuserÀÇ º¯°æ½Ã º¯È­µÇ´Â parameter¸¦ »ìÆ캸±â·Î ÇÑ´Ù. system: SPARCstation ss2 M/M : 52MB Disk : 4G OS : Solaris 2.4 ¡Û À§¿Í °°Àº »ç¾ç¿¡¼­ maxusers¸¦ 64¸íÀ¸·Î ´Ã¸®°íÀÚ ÇÔ.( max user ¸¦ ±âÁØÀ¸·Î ´Ù¸¥ kernel parameter ¸¦ ¼öÁ¤Çϵµ·Ï ÇÔ. # cp /etc/system /etc/system.org # vi /etc/system set maxusers=64 set max_nprocs=1034 set ncsize=1178 set ndquot=1194 set maxuprc=1029 set ufs_ninode=1178 set pt_cnt=100 -----> 100 °³ÀÇ psudo device¸¦ ±¸¼ºÇÔ ( default 48 ) # reboot -- -r ( -r optionÀ¸·Î kernelÀ» rebuild ½ÃÄÑÁÜ ) ¡Û ¸¸¾à /etc/systemÀÇ ¼³Á¤ÀÌ À߸øµÇ¾î bootingÀÌ µÇÁö ¾ÊÀ» ¶§´Â ¹Ì¸® copy ÇصР/etc/system.org·Î systemÀ» ºÎÆÃÇÏ¿© /etc/system fileÀ» ¼öÁ¤Çϵµ·Ï ÇÑ´Ù. ÁøÇà¼ø¼­´Â ´ÙÀ½°ú °°´Ù. OK boot -a ---> -a optionÀ» »ç¿ëÇÏ¿© interactiveÇÏ°Ô ½Ã½ºÅÛÀ» booting Rebooting from -a Boot device: /sbus/esp@0,800000/sd@3,0 File and args: -a Enter filename [/kernel/unix]: (return) : Name of system file [etc/system]: etc/system.org Name of default directory for modules [/kernel /usr/kernel]: (return) root filesystem type [ufs] (return) : ¡Û bootingÀ» ÇÑ ÈÄ "sysdef -i" optionÀ¸·Î kernel parameter¸¦ ºñ±³ÇØ º¸¸é /etc/system fileÀ» ¼öÁ¤ÇÑ ÈÄ¿Í ¼öÁ¤ÀüÀÇ Â÷ÀÌÁ¡À» ¾Ë ¼ö°¡ ÀÖ´Ù. ¼öÁ¤Àü: 826 maximum number of processes (v.v_proc) 821 maximum processes per user id (v.v_maxup) ¼öÁ¤ÈÄ: 1034 maximum number of processes (v.v_proc) 1029 maximum processes per user id (v.v_maxup) 4. ±âŸ TuningÀÌ °¡´ÉÇÑ parameterµé 1) Buffer Cache Parameters Parameter default Description bufhwm 2% of physical memory 1Kbytes ´ÜÀ§·Î Ç¥ÇöµÇ´Â buffer cache memory »ç¿ë·®ÀÇ ÃÖ´ë°ª ¡Û ¸¸¾à physical memory size°¡ 52MB ÀÎ °æ¿ì 2%¿¡ ÇØ´çµÇ´Â buffer cache parameter °ªÀÌ ÀÚµ¿À¸·Î ºÎÆýÿ¡ ¼¼ÆõǸç È®ÀÎÀº ´ÙÀ½ÀÇ ¸í·É¾î¸¦ ÀÌ¿ëÇÑ´Ù. # /usr/sbin/sysdef -i |grep bufhwm 1069056 maximum memory allowed in buffer cache (bufhwm) ( 52Mbyte physical memory¿¡ ´ëÇÑ 2%ÀÇ buffer cache°¡ ÀÚµ¿¼³Á¤µÊ ) # vi /etc/system set bufhwm=2088 --> buffer cache size¸¦ µÎ¹è·Î ´Ã¸®°íÀÚ ÇÒ¶§ : 2088*1024byte = 2138112byte·Î ±âÁ¸ÀÇ 1069056 º¸´Ù µÎ¹èÀÇ buffer cache size¸¦ °®°ÔµÊ. # reboot - -r # /usr/sbin/sysdef -i |grep bufhwm 2138112 maximum memory allowed in buffer cache (bufhwm) 2) Streams Parameters Parameter Default Description nstrpush 9 Çã¿ëµÈ pushes streamsÀÇ ÃÖ´ë°ª strmsgsz 65536 »ç¿ëÀÚ°¡ ¸¸µé¼ö ÀÖ´Â ÃÖ´ëÀÇ streams message size·Î 0 ÀÏ °æ¿ì ÃÖ´ë°ªÀÇ »óÇÑ À» µÎÁö ¾ÊÀ½À» ÀǹÌÇϸç Solaris 2.4ÀÇ °æ¿ì 65536ÀÌ default valueÀÌ´Ù. strctlsz 1024 messageÀÇ ctl partÀÇ ÃÖ´ë°ª ÀÇ¹Ì ¡Û ÇöÀç »ç¿ëÇÏ°í ÀÖ´Â ½Ã½ºÅÛÀÇ STREAM resource¸¦ ¾Ë¾Æº¸´Â ¹æ¹ý # uname -a SunOS cupid 5.4 generic sun4c sparc # /usr/sbin/sysdef -i |grep STR 9 maximum number of pushes allowed (NSTRPUSH) 65536 maximum stream message size (STRMSGSZ) 1024 max size of ctl part of message (STRCTLSZ) ¡Û ÇöÀçÀÇ STREAM parameter¸¦ º¯°æÇÏ°íÀÚ ÇÒ ¶§ # vi /etc/system set nstrpush=18 --> default 9 set strmsgsz=0 --> default 65536 ( 0 ´Â unlimitÀÇ Àǹ̸¦ °¡Áü ) set strctlsz=2048 --> default 1024 : :wq # reboot -- -r # /usr/sbin/sysdef -i |grep STR 18 maximum number of pushes allowed (NSTRPUSH) 0 maximum stream message size (STRMSGSZ) 2048 max size of ctl part of message (STRCTLSZ) 3) Interprocess Communication (IPC) Parameters ¡Û ÁÖ·Î Database¿¡¼­ÀÇ semaphore¿Í shared memory size ¼³Á¤½Ã »ç¿ëµÇ¸ç ´ÙÀ½°ú °°Àº ¿©·¯°¡Áö parameter °ªÀ» °¡Áø´Ù. setting½Ã¿¡´Â ¾î¶°ÇÑ applicationÀÌ ¼öÇàµÇ´ÂÁö È®ÀÎÇÏ¿©¾ß Çϸç ÇØ´çµÇ´Â Àü¹®°¡¿Í »óÀÇÇÏ¿© ÀûÀýÇÏ°Ô parameter °ªÀ» ¼³Á¤Çϵµ·Ï ÇÑ´Ù. ¡Ý IPC Messages Parameters syntax: set msgsys:msginfo_variable=value Parameter default Description msginfo_msgmap 100 message mapÀÇ entry ¼ö msginfo_msgmax 2048 message sizeÀÇ ÃÖ´ë°ª msginfo_msgmnb 4096 queueÀÇ ÃÖ´ë byte ¼ö msginfo_msgmni 50 message queue identifierÀÇ °¹¼ö msginfo_msgssz 8 messageÀÇ segment size·Î ¹Ýµå½Ã word sizeÀÇ °öÀ̵Ǿî¾ß ÇÔ. msginfo_msgtql 40 system message headerÀÇ °¹¼ö msginfo_msgseq 1024 message segmentÀÇ °¹¼ö·Î 32768 º¸´Ù À۾ƾßÇÔ. ¡Ý IPC Semaphores Parameters Systax: set semsys:seminfo_variable=variable Parameter default Description seminfo_semmap 10 semaphore mapÀÇ entry °¹¼ö seminfo_semmni 10 semaphore identifierÀÇ °¹¼ö seminfo_semmns 60 systemÀÇ semaphore °¹¼ö seminfo_semmnu 30 systemÀÇ undo structureÀÇ °³¼ö seminfo_semmsl 25 °¢ id º° semaphoreÀÇ ÃÖ´ë°ª seminfo_semopm 10 °¢ semaphore call¸¶´ÙÀÇ ÃÖ´ë operationÀÇ °¹¼ö seminfo_semume 10 °¢ process¸¶´ÙÀÇ undo entryÀÇ ÃÖ´ë°ª seminfo_semvmx 32767 semaphoreÀÇ ÃÖ´ë°ª seminfo_semaem 16384 Adjust on exit maximum value ¡Ý IPC Shared Memory Syntax: set shmsys:shminfo_variable=value Parameter default Description shminfo_shmmax 1048576 Shared memory segmentÀÇ ÃÖ´ë Å©±â shminfo_shmmin 1 Shared memory segmentÀÇ ÃÖ¼Ò Å©±â shminfo_shmmni 100 Shared memoryÀÇ identifierÀÇ °³¼ö shminfo_shmseg 6 °¢ process´ç Segments 4) TPI Loopback Pseudo-driver Parameters syntax: set tune:variable=value Parameter Default Description tune_t_gpgslo 25 freememÀÌ t_getpgslowº¸´Ù ÀÛ¾ÆÁú °æ¿ì process·Î ºÎÅÍ pages¸¦ »©¾Ñ¾Æ ¿È tune_t_fsflush 30 ÃÊ ´ÜÀ§·Î ¾ðÁ¦ fsflush°¡ runµÇ´ÂÁö¸¦ Á¤ÀÇ fsflush´Â Ç×»ó memory¿¡ »óÁÖÇϸ鼭 Á¤±âÀû À¸·Î fsflush¸¦ ÁøÇà½ÃÅ´ tune_t_minarme 25 page¿¡ À־ÀÇ deadlockÀ» ÇÇÇϱâÀ§ÇÑ ÃÖ¼Ò ÇÑÀÇ ÀÌ¿ë°¡´ÉÇÑ resident memory ( not swapable ) tune_t_minasme 25 page¿¡ À־ÀÇ deadlockÀ» ÇÇÇϱâÀ§ÇÑ ÃÖ¼Ò ÇÑÀÇ ÀÌ¿ë°¡´ÉÇÑ swapable memory. tune_t_flckrec 512 frlocksÀÇ activeÇÑ ÃÖ´ë°ª putbufsz 2000 putchar bufferÀÇ Å©±â pt_cnt 48 pseudo-ttys·Î ±¸¼ºµÈ total °¹¼ö sadcnt 16 sad deviceÀÇ °¹¼ö 5) Miscellaneous Parameters Parameter Default Description lwp_default_stksize 8192 lwps¿¡ ´ëÇÑ kernel stackÀÇ Å©±â·Î kernel stackÀÇ overflow°¡ ¹ß»ý½Ã¿¡ Àû¿ëµÇ°ÔµÊ. byte ´ÜÀ§·Î Ç¥ÇöµÇ¸ç ¹Ýµå½Ã PAGESIZEÀÇ ¹è¼ö°¡ µÇ¾î¾ß ÇÔ