From c43857c794153dc840ac1f50d489bc6bd876cd09 Mon Sep 17 00:00:00 2001 From: rbqiu Date: Wed, 14 Aug 2013 05:30:41 +0000 Subject: [PATCH] =?UTF-8?q?1.=20=E7=89=88=E6=9C=AC1.9,=20=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E9=97=AE=E9=A2=981)=E6=97=A5=E5=BF=97=E7=BA=BF?= =?UTF-8?q?=E7=A8=8B=E4=BF=AE=E6=94=B9=E4=B8=BA1=E4=B8=AA=E7=BA=BF?= =?UTF-8?q?=E7=A8=8B=EF=BC=8C=E9=80=80=E5=87=BA=E6=97=B6=E5=9B=9E=E6=94=B6?= =?UTF-8?q?=E7=BA=BF=E7=A8=8B=E8=B5=84=E6=BA=90=EF=BC=9B2=EF=BC=89?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E6=96=87=E4=BB=B6=E5=91=BD=E5=90=8D=E7=BA=BF?= =?UTF-8?q?=E7=A8=8B=E5=92=8C=E6=97=A5=E5=BF=97=E5=86=99=E5=85=A5=E7=BA=BF?= =?UTF-8?q?=E7=A8=8B=E5=AF=B9log=5Fpath=E5=AD=98=E5=9C=A8=E8=AE=BF?= =?UTF-8?q?=E9=97=AE=E5=86=B2=E7=AA=81=EF=BC=8C=E5=AF=BC=E8=87=B4=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E6=96=87=E4=BB=B6=E5=88=9B=E5=BB=BA=E4=BD=8D=E7=BD=AE?= =?UTF-8?q?=E5=AD=98=E5=9C=A8=E4=B8=8D=E5=AF=B9=E7=9A=84=E5=8F=AF=E8=83=BD?= =?UTF-8?q?=E3=80=823=EF=BC=89common.c=E4=B8=BAdaemon=E5=92=8Cso=E5=85=B1?= =?UTF-8?q?=E5=90=8C=E4=BD=BF=E7=94=A8=E7=9A=84=E6=97=A5=E5=BF=97=E7=BA=BF?= =?UTF-8?q?=E7=A8=8B=E5=86=99=E5=85=A5=E7=9A=84=E5=87=BD=E6=95=B0=EF=BC=8C?= =?UTF-8?q?=E6=8F=90=E5=8F=96=E5=87=BA=E6=9D=A5=E6=96=B9=E4=BE=BF=E7=BB=B4?= =?UTF-8?q?=E6=8A=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://172.17.0.253/svn/soft_pkgs/sys_nicmonitor@1415 09c3743a-b0dd-45d3-b506-aa74c7a2a6ef --- code/trunk/LATEST | 1 + code/trunk/README | 3 + code/trunk/src/Pkgfile | 2 +- code/trunk/src/{README1.8 => README} | 37 +++- code/trunk/src/V1.8 | 0 code/trunk/src/sys_nicmonitor-1.9.tar.gz | Bin 0 -> 20230 bytes code/trunk/sys_nicmonitor/README | 90 ++++++++++ code/trunk/sys_nicmonitor/bin/sys_nicmonitor | Bin 47677 -> 0 bytes code/trunk/sys_nicmonitor/common.c | 159 +++++++++++++++++ code/trunk/sys_nicmonitor/mnic.c | 163 +++++++++++------- code/trunk/sys_nicmonitor/nicinfo_shm.c | 33 +--- code/trunk/sys_nicmonitor/test.c | 15 ++ ...onitor#1.9-x86_64-Linx-Rocky4.2.pkg.tar.gz | Bin 0 -> 20319 bytes packages/sys_nicmonitor-1.9.tar.bz2 | Bin 0 -> 45064 bytes 14 files changed, 408 insertions(+), 95 deletions(-) create mode 100644 code/trunk/LATEST rename code/trunk/src/{README1.8 => README} (59%) delete mode 100644 code/trunk/src/V1.8 create mode 100644 code/trunk/src/sys_nicmonitor-1.9.tar.gz create mode 100644 code/trunk/sys_nicmonitor/README delete mode 100755 code/trunk/sys_nicmonitor/bin/sys_nicmonitor create mode 100644 code/trunk/sys_nicmonitor/common.c create mode 100644 code/trunk/sys_nicmonitor/test.c create mode 100644 packages/sys_nicmonitor#1.9-x86_64-Linx-Rocky4.2.pkg.tar.gz create mode 100644 packages/sys_nicmonitor-1.9.tar.bz2 diff --git a/code/trunk/LATEST b/code/trunk/LATEST new file mode 100644 index 0000000..2e0e38c --- /dev/null +++ b/code/trunk/LATEST @@ -0,0 +1 @@ +1.9 diff --git a/code/trunk/README b/code/trunk/README index 7eeaeda..3c88025 100644 --- a/code/trunk/README +++ b/code/trunk/README @@ -1,6 +1,9 @@ ========= 编译说明: 在Rocky 4.2上编译 + 编译前先安装dotconf软件包。 + + pkgadd dotconf#1.0.13-1.pkg.tar.gz 执行: sh build.sh 将在当前的目录下生成安装包: sys_nicmonitor#1.8.1-x86_64-Linx-Rocky4.2.pkg.tar.gz diff --git a/code/trunk/src/Pkgfile b/code/trunk/src/Pkgfile index 52c988e..afa9a28 100644 --- a/code/trunk/src/Pkgfile +++ b/code/trunk/src/Pkgfile @@ -5,7 +5,7 @@ # Depends on: libart_lgpl libcgi libgd pango python tcl intltool name=sys_nicmonitor -version=1.8.1 +version=1.9 release=x86_64-Linx-Rocky4.2 workdir=`pwd` #source=/home/d5000/d5000/linx/1.8/$name-$version.tar.gz diff --git a/code/trunk/src/README1.8 b/code/trunk/src/README similarity index 59% rename from code/trunk/src/README1.8 rename to code/trunk/src/README index 356afb1..726685a 100644 --- a/code/trunk/src/README1.8 +++ b/code/trunk/src/README @@ -1,27 +1,52 @@ ========= +编译前准备: + 编译前先安装dotconf软件包。 + libman.so拷贝到/usr/lib64/下 + pkgadd dotconf#1.0.13-1.pkg.tar.gz + 编译说明: 在Rocky 4.2上编译 - 1)修改Pkgfile中的source指向的源文件位置 - 2)然后执行: sh build.sh + + 执行: sh build.sh 将在当前的目录下生成安装包: - sys_nicmonitor#1.8-x86_64-Linx-Rocky4.2.pkg.tar.gz + sys_nicmonitor#1.9-x86_64-Linx-Rocky4.2.pkg.tar.gz ======== 安装说明: 1)安装,以root的用户执行安装命令: - pkgadd sys_nicmonitor#1.8-x86_64-Linx-Rocky4.2.pkg.tar.gz + pkgadd sys_nicmonitor#1.9-x86_64-Linx-Rocky4.2.pkg.tar.gz 如果之前已经安装,则可先卸载旧的然后再安装,或者通过更新方式安装 卸载命令: pkgrm sys_nicmonitor 更新方式安装命令: - pkgadd -u sys_nicmonitor#1.8-x86_64-Linx-Rocky4.2.pkg.tar.gz + pkgadd -u sys_nicmonitor#1.9-x86_64-Linx-Rocky4.2.pkg.tar.gz 2)查看安装是否成功 pkginfo -i|grep sys_nicmonitor 或者 - 查看d5000用户的目录下lib/libnic_shm.so和bin/sys_nicmonitor的日期是否 + 查看d5000用户的目录下lib/libnic_shm.so和bin/sys_nicmonitor的日期是否匹配 ======== + 版本说明: +--V1.9 -- + 2013-08-12 + 1)修复问题:占用内存快速累加,导致内存占用很大 + 问题描述:日志线程资源退出时未回收,导致占用内存快速累加 + 解决办法:修改为一个日志线程,并且线程退出时设置为自动回收。 + 将日志写文件的地方放到common.c中,以便动态库和daemon程序使用一个。 + + 2)修复问题:日志文件名在家目录或者var目录下,未在规定位置 + 问题描述:日志文件命名在一个单独的线程进行,导致日志线程和该线程对log_path存在同时访问的情况。 + 导致在换天或者换月时,日志文件名变更一半时,日志写线程此时写日志,用未更新完成的 + log_path创建日志,导致日志文件不再规定的位置。 + 解决办法:增加线程互斥锁pthread_mutex对log_path进行保护,修复该问题。 + + +--V1.8.1-- + 2013-06-05 + 1)修改BUG:ping_gw函数当PING失败时没有尝试对余下的GW进行PING操作 + 2)增加环境变量SYS_NIC_DEBUG用于调试流量抖动问题。 + --V1.8 -- 2013-05-27 对系统高磁盘IO情况下,应用如果进行IO将可能会被阻塞。本版本为此作出调整。 diff --git a/code/trunk/src/V1.8 b/code/trunk/src/V1.8 deleted file mode 100644 index e69de29..0000000 diff --git a/code/trunk/src/sys_nicmonitor-1.9.tar.gz b/code/trunk/src/sys_nicmonitor-1.9.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..75a49d30f3a0dcb8c73b1fedd7098aa4331567be GIT binary patch literal 20230 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 Rlg}f3{y)5Q3_Jj60RWy?tl|Iw literal 0 HcmV?d00001 diff --git a/code/trunk/sys_nicmonitor/README b/code/trunk/sys_nicmonitor/README new file mode 100644 index 0000000..726685a --- /dev/null +++ b/code/trunk/sys_nicmonitor/README @@ -0,0 +1,90 @@ +========= +编译前准备: + 编译前先安装dotconf软件包。 + libman.so拷贝到/usr/lib64/下 + pkgadd dotconf#1.0.13-1.pkg.tar.gz + +编译说明: + 在Rocky 4.2上编译 + + 执行: sh build.sh + 将在当前的目录下生成安装包: + sys_nicmonitor#1.9-x86_64-Linx-Rocky4.2.pkg.tar.gz + +======== +安装说明: + 1)安装,以root的用户执行安装命令: + pkgadd sys_nicmonitor#1.9-x86_64-Linx-Rocky4.2.pkg.tar.gz + 如果之前已经安装,则可先卸载旧的然后再安装,或者通过更新方式安装 + 卸载命令: pkgrm sys_nicmonitor + 更新方式安装命令: + pkgadd -u sys_nicmonitor#1.9-x86_64-Linx-Rocky4.2.pkg.tar.gz + + 2)查看安装是否成功 + pkginfo -i|grep sys_nicmonitor + 或者 + 查看d5000用户的目录下lib/libnic_shm.so和bin/sys_nicmonitor的日期是否匹配 + +======== + +版本说明: +--V1.9 -- + 2013-08-12 + 1)修复问题:占用内存快速累加,导致内存占用很大 + 问题描述:日志线程资源退出时未回收,导致占用内存快速累加 + 解决办法:修改为一个日志线程,并且线程退出时设置为自动回收。 + 将日志写文件的地方放到common.c中,以便动态库和daemon程序使用一个。 + + 2)修复问题:日志文件名在家目录或者var目录下,未在规定位置 + 问题描述:日志文件命名在一个单独的线程进行,导致日志线程和该线程对log_path存在同时访问的情况。 + 导致在换天或者换月时,日志文件名变更一半时,日志写线程此时写日志,用未更新完成的 + log_path创建日志,导致日志文件不再规定的位置。 + 解决办法:增加线程互斥锁pthread_mutex对log_path进行保护,修复该问题。 + + +--V1.8.1-- + 2013-06-05 + 1)修改BUG:ping_gw函数当PING失败时没有尝试对余下的GW进行PING操作 + 2)增加环境变量SYS_NIC_DEBUG用于调试流量抖动问题。 + +--V1.8 -- + 2013-05-27 +对系统高磁盘IO情况下,应用如果进行IO将可能会被阻塞。本版本为此作出调整。 +cs-fes1上编译测试OK。 + +1) 去掉shm和sem的实体文件 +#define SHM_PATH "$D5000_HOME/share/sys_netcard_shm_path" +#define SEM_PATH "$D5000_HOME/share/sys_netcard_sem_path" + +用key=0x1d5200 代替 sem +用key=0x1d5010 代替 shm + + +2)去掉动态库中get_nic_info接口中,判断路径的opendir调用,采用实际路径 + 上层应用每秒可能调用3次这个接口,每判断一个网卡都调用一次,判断都个网卡的状态时就调用多次。 + + 可改进:一次调用get_nic_info接口,可输入多个网卡,一次返回所有网卡状态信息。 + +3) record_log函数为日志函数,每次写一次,都重新打开一次文件。 + 修改为线程模式,当记录日志时,不会被磁盘IO阻塞。 + +4) 安装目录为d5000用户的HOME目录下的lib和bin目录 + +---- + + +V1.6与V1.7差异 +共享内存路径修改: +由/home/d5000/someone/tmp/sys_netcard_shm_path 改为 /home/d5000/someone/share/sys_netcard_shm_path +信号量路径修改: +由/home/d5000/someone/tmp/sys_netcard_sem_path 改为 /home/d5000/someone/share/sys_netcard_sem_path + +注意:在编译过程中,需要动态看libman.so,它存放在目录 tags/下面 ,在进行编译的时候需要将其拷贝到 +/lib64/目录下,编译的基础环境是 Rocky 4.2 系统。 + +pkgmk命令的使用: +将源代码打包成name-version.tar.gz样式,编写Pkgfile文件。 +使用命令: + pkgmk -um #更新软件包的md5值 + pkgmk -kw #制作pkg安装包 + diff --git a/code/trunk/sys_nicmonitor/bin/sys_nicmonitor b/code/trunk/sys_nicmonitor/bin/sys_nicmonitor deleted file mode 100755 index 93809ce5041bb2e990c8befdd7d889385325fac1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47677 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 W #include #include #include @@ -20,7 +21,7 @@ #define IPLEN 16 #define CONF_FILE "/conf/nic/sys_netcard_conf.txt" -#define MNIC_VERSION "1.8.1" +#define MNIC_VERSION "1.9" #define NIC_UNKNOWN 0 #define NIC_DOWN 1 @@ -161,28 +162,72 @@ static int sys_nic_debug = 0; void create_dir(char *create_path); +#if 0 +///////////////// no use + static pthread_mutex_t lock_record_log = PTHREAD_MUTEX_INITIALIZER; #define LOG_LOCK pthread_mutex_lock(&lock_record_log) #define LOG_UNLOCK pthread_mutex_unlock(&lock_record_log) -//static int is_checkdir = 0; + +#define MAX_LOG_COUNT 5000 +static char **log_prepare = NULL; +static char **log_writing = NULL; +static int log_thread_exit = 1; +static int log_idx = 0; + static void *record_log_thread( void *arg ) { - char *log_str = (char *)arg; + char *log_str; FILE *log_fp = NULL; + char **tmp = NULL; + inti i = 0; - LOG_LOCK; -// if( !is_checkdir ) { - create_dir( log_path ); -// is_checkdir = 1; -// } - if((log_fp = fopen(log_path, "a")) != NULL){ - if(fwrite(log_str, 1, strlen(log_str), log_fp) < 1){ + create_dir( log_path ); + + log_thread_exit = 0; + + log_fp = fopen(log_path, "a"); + + while( !log_thread_exit ) { + if( !log_fp ) { + log_fp = fopen(log_path, "a"); } - fclose(log_fp); - } - LOG_UNLOCK; - free(log_str); + //prepare log strings + LOG_LOCK; + tmp = log_writing; + log_writing = log_prepare; + log_prepare = log_writing; + log_idx=0; + LOG_UNLOCK; + + while( i < MAX_LOG_COUNT ) { + log_str = log_writing[i]; + + if( log_str == NULL ) { + break; + } + + if( log_fp ) { + fwrite( log_str, 1, strlen(log_str), log_fp ); //write to file + } + + free( log_str ); //free + log_writing[i] = NULL; //clear + + //next + i++; + } + usleep(100); + } //while + + if( log_fp ) { + fclose(log_fp); + } + if( log_prepare ) free( log_prepare ); + if( log_writing ) free( log_writing ); + log_prepare = NULL; + log_writing = NULL; return NULL; } @@ -219,43 +264,54 @@ void record_log(char *str) fclose(log_fp); } #else + static int log_thread_started = 0; time_t tamp; char str_tm[4]; char log_str[512]; -// FILE *log_fp = NULL; struct tm tmptr; struct timeval tv; struct timezone tz; - -// if((log_fp = fopen(log_path, "a")) != NULL){ - tamp = time(NULL); - memset(str_tm, 0, sizeof(str_tm)); - memset(log_str, 0, sizeof(log_str)); - localtime_r(&tamp, &tmptr); - gettimeofday(&tv, &tz); - snprintf(str_tm, sizeof(str_tm), "%d", (int)tv.tv_usec/1000); - if(str_tm[1] == '\0')str_tm[1] = '0'; - if(str_tm[2] == '\0')str_tm[2] = '0'; - strftime(log_str, sizeof(log_str), "%F %T.", &tmptr); - strcat(log_str, str_tm); - strcat(log_str, " "); - strcat(log_str, process_name); - strcat(log_str, " "); - strcat(log_str, str); -// if(fwrite(log_str, 1, strlen(log_str), log_fp) < 1){ -// } -// fclose(log_fp); - -// } - -{ pthread_t pid; char *keepstr = strdup( log_str ); - pthread_create( &pid, NULL, record_log_thread, (void *)keepstr); -} + + tamp = time(NULL); + memset(str_tm, 0, sizeof(str_tm)); + memset(log_str, 0, sizeof(log_str)); + localtime_r(&tamp, &tmptr); + gettimeofday(&tv, &tz); + snprintf(str_tm, sizeof(str_tm), "%d", (int)tv.tv_usec/1000); + if(str_tm[1] == '\0')str_tm[1] = '0'; + if(str_tm[2] == '\0')str_tm[2] = '0'; + strftime(log_str, sizeof(log_str), "%F %T. %s %s %s", &tmptr, str_tm, process_name, str ); + + //check log thread + if( log_thread_started == 0 ) { + log_thread_started = 1; + log_prepare = (char **)malloc( sizeof(char *)*MAX_LOG_COUNT ); + log_writing = (char **)malloc( sizeof(char *)*MAX_LOG_COUNT ); + memset( log_prepare, 0, sizeof(char *) *MAX_LOG_COUNT ); + memset( log_writing, 0, sizeof(char *) *MAX_LOG_COUNT ); + log_idx = 0; + + pthread_create( &pid, NULL, record_log_thread, (void *)NULL ); + } + + LOG_LOCK; + if( log_prepare ) { + log_prepare[log_idx] = keepstr; + log_idx++; + } + LOG_UNLOCK; + #endif } +#else + +#include "common.c" +#endif + + static void init_sem(int *semid, CONFIG_FILE_ST *ptr) { key_t key; @@ -908,6 +964,7 @@ static void *create_logfile(void *ptr) else if(old_day != tmptr.tm_mday)flag = 1; else flag = 0; if(flag){ + LOGPATH_LOCK; s = strrchr(log_path, '/'); s++; *s = '\0'; @@ -916,6 +973,7 @@ static void *create_logfile(void *ptr) strcat(buf, process_name); strcat(buf, ".log"); strcat(log_path, buf); + mode_t mask_tmp; mask_tmp = umask(0000); if((fd = open(log_path, O_RDWR|O_CREAT, 0666)) != -1){ @@ -923,6 +981,8 @@ static void *create_logfile(void *ptr) close(fd); } umask(mask_tmp); + LOGPATH_UNLOCK; + old_mon = tmptr.tm_mon+1; old_day = tmptr.tm_mday; strcpy(del_file[head++], log_path); @@ -1246,29 +1306,6 @@ int get_broad_ip(void) return 0; } -void create_dir(char *create_path) -{ - int i,len = strlen(create_path); - - len = strlen(create_path); - - for(i=1; irCZQt0oZtk1+%bYX6`OnNg^Wm($ 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 G0RIEoZ`iy5 literal 0 HcmV?d00001 diff --git a/packages/sys_nicmonitor-1.9.tar.bz2 b/packages/sys_nicmonitor-1.9.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..64f2247ab75f5f0b9807b6b4ce8dda7a8b592cf7 GIT binary patch literal 45064 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

pmQGS1b;aW9% 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 AGynhq literal 0 HcmV?d00001