# LogStats **Repository Path**: arsenew/log-stats ## Basic Information - **Project Name**: LogStats - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-08-11 - **Last Updated**: 2025-04-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README applications目录下包含了论文所有的被测应用,包括原始Java应用程序以及生成的java、c#和go程序。 resource目录下包含了转换得到的java,go,c#和cj程序,以及执行这些程序的脚本文件。 通过运行脚本,能够生成相应的日志文件和监控文件。 使用src/LogStats,可以对这些日志文件和监控记录进行解析,得到执行数据和GC相关数据。 分析结果将输出到项目根目录下的csv文件中 ### 执行脚本得到日志文件和监控记录 在resource/javaandgo,resource/csharp和resource/cj目录下分别有java,go,c#和cj程序, 以及运行它们的脚本文件start_java_gc.sh, start_go_gc.sh, start_csharp_gc.sh, start_cj_gc.sh。 这四个脚本的运行方式相同,运行时传入5个参数,分别是应用名称,初始堆大小(GB),堆大小单次增加大小(GB),堆大小增加次数,测试次数。 例如对于java运行array应用可以设置。 ```shell ./start_java_gc.sh array 3 2 3 1 ``` 另外,可以在commands中添加不同的应用或负载,如: ``` commands=( "${X}small" "${X}smallslow" "${X}middle" "${X}middleslow" "${X}big" "${X}bigslow") ``` 运行之后可以得到GC日志文件,如 arraybig3_java_3.log。 以及CPU和Memory使用情况的监控文件,如arraybig3_java_3_usage_info。 ### 运行程序得到GC性能分析结果 主要运行入口在src/LogStats.java,其中需要配置的选项包括: 需要分析的应用名称,如 ``` String[] workload = {"queue","stack","array","tree"}; ``` 测试的目标GC,如 ``` String[] target = {"java", "javaz", "go", "csharp", "cj"}; ``` 目标GC的日志所在文件,如 ``` String[] base = {"resource/javaandgo/", "resource/javaandgo/", "resource/javaandgo/", "resource/csharp/", "resource/cj/"}; ``` 目标应用的负载,如 ``` String[] sizes = {"small", "smallslow", "middle", "middleslow", "big", "bigslow"}; ``` 每个应用的起始堆大小,每次递增大小,以及递增次数,如 ``` int[] value = {3,3,3,3}; int[] update = {3,3,3,3}; int step = 3; ``` 以及测试的批次号,如 ``` String[] time = {"1", "2"}; ``` 最终分析的结果都会被输出到项目目录下,以每个应用的一批次运行为单位,总结到一个csv文件中,如 ``` log_stats_array_1.csv ``` 统计的内容包含使用每种GC算法,在每个应用的每个负载下,具体执行时间,平均CPU使用率,平均内存使用值,GC次数,GC用时等