|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.
Docbook ¿ø¹®
getrlimit(2) ÀÚ¿ø(resource)ÀÇ °ªÀ» ¾ò¾î¿À°í, °ªÀ» ¼³Á¤ÇÑ´Ù.
1.1. »ç¿ë¹ý #include <sys/types.h>
#include <sys/resource.h>
#include <unistd.h>
int getrlimit(int resource, struct rlimit *rlim);
int getrusage(int who, struct rusage *usage);
int setrlimit(int resource, const struct rlimit *rlim);
|
1.2. ¼³¸í getrlimit()¿Í setrlimit()´Â ÀÚ¿øÀÇ Á¦ÇѰªÀ» ¾Ë¾Æ³»°Å³ª ¼³Á¤Çϱâ
À§Çؼ »ç¿ëÇÑ´Ù. À̶§ ÀÚ¿øÀÇ Á¾·ù´Â resource¸¦
ÀÌ¿ëÇØ¼ ÁöÁ¤°¡´ÉÇÏ´Ù. resource´Â ´ÙÀ½Áß ÇϳªÀÌ´Ù. ¸®¼Ò½ºÀÇ Å©±â´Â
rlim¸¦ ÀÌ¿ëÇÏ¸é µÈ´Ù. rlim±¸Á¶Ã¼´Â ´ÙÀ½ÀÇ
¸â¹öµéÀ» °¡Áø´Ù.
struct rlimit
{
rlim_t rlim_cur; /* soft limit */
rlim_t rlim_max; /* Hard limit */
};
|
¼ÒÇÁÆ® ¸®¹ÌÆ®(soft limit)´Â º¯°æÇϰíÀÚ ÇÏ´Â °ªÀ» Ä¿³Î¿¡
¿äûÇÑ´Ù. ÇÏµå ¸®¹ÌÆ®(hard limit)´Â ÀÚ¿øÀÇ ¼³Á¤°¡´ÉÇÑ ÃÖ´ë °ªÀ¸·Î
rlim_curÀº ÇÏµå ¸®¹ÌÆ®ÀÇ Á¦ÇÑÀ» ¹Þ°Ô µÈ´Ù.
´ÙÀ½Àº ¼±Åð¡´ÉÇÑ resourceÀÇ Á¾·ùµéÀÌ´Ù.
RLIMIT_CPU /* ÃÊ ´ÜÀ§ÀÇ CPU ½Ã°£ */
RLIMIT_FSIZE /* ÃÖ´ë ÆÄÀÏ Å©±â */
RLIMIT_DATA /* ÃÖ´ë µ¥ÀÌŸ Å©±â */
RLIMIT_STACK /* ÃÖ´ë ½ºÅà ũ±â */
RLIMIT_CORE /* ÃÖ´ë ÄÚ¾î ÆÄÀÏ Å©±â */
RLIMIT_RSS /* ÃÖ´ë °ÅÁÖ ÁýÇÕ Å©±â */
RLIMIT_NPROC /* ÃÖ´ë ÇÁ·Î¼¼½º ¼ö */
RLIMIT_NOFILE /* ÃÖ´ë ¿ ¼ö ÀÖ´Â ÆÄÀÏÀÇ ¼ö */
RLIMIT_MEMLOCK /* ÃÖ´ë Àá±ä ±â¾ï Àå¼Ò ÁÖ¼Ò °ø°£ */
RLIMIT_AS /* ÁÖ¼Ò °ø°£(°¡»ó ¸Þ¸ð¸®) Á¦ÇѰª */
|
getrusage()´Â ÇöÀç »ç¿ëÁßÀÎ resource Á¤º¸¸¦ µÇµ¹·ÁÁØ´Ù.
who´Â RUSAGE_SELF ¿Í RUSAGE_CHILDREN µÑ Áß
Çϳª¸¦ ¼±ÅÃÇÒ ¼ö ÀÖ´Ù. ÀüÀÚ´Â ÇöÀç ÇÁ·Î¼¼½º°¡ »ç¿ëÇÏ´Â ¸®¼Ò½ºÀÇ Á¤¸¦º¸
µÇµ¹·ÁÁÖ°í ÈÄÀÚ´Â ÇöÀç ÇÁ·Î¼¼½º¿Í ±× ÀÚ½Ä ÇÁ·Î¼¼½ºµéÀÌ »ç¿ëÇÏ´Â
¸ðµç ¸®¼Ò½ºÀÇ Á¤º¸¸¦ µÇµ¹·ÁÁØ´Ù(Á¾·áµÇ¾î¼ ±â´Ù¸®´Â ÀÚ½Ä ÇÁ·Î¼¼½ºµµ Æ÷ÇԵȴÙ.)
ÀÌµé ¸®¼Ò½º Á¤º¸´Â rusage¿¡ ÀúÀåµÈ´Ù.
struct rusage {
struct timeval ru_utime; /* user time used */
struct timeval ru_stime; /* system time used */
long ru_maxrss; /* maximum resident set size */
long ru_ixrss; /* integral shared memory size */
long ru_idrss; /* integral unshared data size */
long ru_isrss; /* integral unshared stack size */
long ru_minflt; /* page reclaims */
long ru_majflt; /* page faults */
long ru_nswap; /* swaps */
long ru_inblock; /* block input operations */
long ru_oublock; /* block output operations */
long ru_msgsnd; /* messages sent */
long ru_msgrcv; /* messages received */
long ru_nsignals; /* signals received */
long ru_nvcsw; /* voluntary context switches */
long ru_nivcsw; /* involuntary context switches */
};
|
1.3. ¹Ýȯ°ª ¼º°øÇÒ°æ¿ì 0À» ½ÇÆÐÇßÀ»°æ¿ì¿¡´Â -1À» ¹ÝȯÇϸç, Àû´çÇÑ errno °ªÀ»
¼³Á¤ÇÑ´Ù.
1.4. ¿¡·¯ - EFAULT
rlim ȤÀº usageÀÌ
À߸øµÈ ÁÖ¼Ò¸¦ °¡¸®Å°°í ÀÖ´Ù.
- EINVAL
getrlimit()³ª setrlimit()¿¡¼ À߸øµÈ resource³ª
who°ªÀ» »ç¿ëÇßÀ» °æ¿ì
- EPERM
½´ÆÛÀ¯Àú°¡ ¾Æ´Ñ »ç¿ëÀÚ°¡ setrlimit()¸¦ ÀÌ¿ëÇØ¼ ÇöÀç Çϵ帮¹ÌÆ® °ªÀ»
ÃʰúÇØ¼ ¼ÒÇÁÆ® ¸®¹ÌÆ® °ªÀ̳ª ÇÏµå ¸®¹ÌÆ® °ªÀ» Àû¿ë½Ãų·Á°í ÇÒ°æ¿ì
1.5. ¿¹Á¦
#include <sys/time.h>
#include <sys/resource.h>
#include <unistd.h>
#include <stdio.h>
int main()
{
struct rlimit rlim;
// »ý¼º°¡´ÉÇÑ ÇÁ·Î¼¼½ºÀÇ °¹¼ö¸¦ Ãâ·ÂÇÑ´Ù. (ÇöÀç : ÃÖ´ë)
getrlimit(RLIMIT_NPROC, &rlim);
printf("PROC MAX : %lu : %lu\n", rlim.rlim_cur, rlim.rlim_max);
// ¿Àǰ¡´ÉÇÑ ÆÄÀÏÀÇ °¹¼ö¸¦ Ãâ·ÂÇÑ´Ù.
getrlimit(RLIMIT_NOFILE, &rlim);
printf("FILE MAX : %lu : %lu\n", rlim.rlim_cur, rlim.rlim_max);
// »ç¿ë°¡´ÉÇÑ CPUÀÚ¿øÀ» Ãâ·ÂÇÑ´Ù.
getrlimit(RLIMIT_CPU, &rlim);
// ¸¸¾à ¹«ÇÑ´ë·Î »ç¿ë°¡´ÉÇÏ´Ù¸é UNLIMIT¸¦ Ãâ·ÂÇϵµ·ÏÇÑ´Ù.
// CPUÀÚ¿øÀº ÃÖ´ëÇÑ »ç¿ë°¡´ÉÇϵµ·Ï µÇ¾îÀÖÀ½À¸·Î UNLIMIT¸¦ Ãâ·ÂÇÒ°ÍÀÌ´Ù.
if(rlim.rlim_cur == RLIM_INFINITY)
{
printf("UNLIMIT\n");
}
}
|
#include <sys/time.h>
#include <sys/resource.h>
#include <unistd.h>
#include <stdio.h>
int main(int argc, char **argv)
{
struct rlimit rlim;
getrlimit(RLIMIT_NOFILE, &rlim);
printf("Open file %d : %d\n", rlim.rlim_cur, rlim.rlim_max);
rlim.rlim_cur += 1024;
rlim.rlim_max += 1024;
if(setrlimit(RLIMIT_NOFILE, &rlim) == -1)
return 0;
printf("Open file %d : %d\n", rlim.rlim_cur, rlim.rlim_max);
}
±âŸ ¼³¸í
ÀÏ¹Ý À¯Àú´Â hard limit °ªÀ» º¯°æÇÒ ¼ö ¾ø´Ù. ´ÜÁö hard limit °ªÀÇ Çϵµ ³»¿¡¼ soft limit °ªÀ» º¯°æÇÒ ¼ö ÀÖÀ» »ÓÀÌ´Ù. ±×·¯¹Ç·Î ½ÇÁúÀûÀ¸·Î Á¦ÇÑ °ªÀ» º¯°æÇϱâ À§Çؼ´Â ·çÆ® ±ÇÇÑÀ¸·Î /etc/security/limits.conf ÆÄÀÏ¿¡ Ãʱâ hard limit°ª°ú soft limit°ªÀ» ¼³Á¤ ÇØµÎ¾î¾ß ÇÑ´Ù.
Æ÷¸ËÀº ´ÙÀ½°ú °°´Ù.
# domain type item value
# yundream À¯ÀúÀÇ ÇÁ·Î¼¼½º°¡ ¿ ¼ö ÀÖ´Â ÆÄÀÏÀÇ °³¼ö¸¦ soft limit 2048, hard limit 4096 À¸·Î ÁöÁ¤ÇÑ´Ù.
yundream soft nofile 2048
yundream hard nofile 4096
|
|