Artifacts for "Understanding How Runtime Configuration Affects Software along with Variables&Constants"
This repository includes the artifacts of the our paper: [Who is in Charge here? Understanding How Runtime Configuration Affects Software along with Variables&Constants]
The repository includes the following artifacts:
-
Interaction cases
: 851 cases from ten large-scale projects (HBase, HDFS, Hive, Httpd, MapReduce, MySQL, Nginx, Postgres, Yarn, Zookeeper). -
Sampled parameters
: 705 parameters we sample from these ten projects.
We present an exhaustive collection of all studied cases categorized by interaction patterns, encompassing the four types and seven patterns elucidated in Section III:
The following seven files correspond to the seven interaction patterns described in Section III and Table III. Each of the file contains all the interaction cases belonging to its respective interaction type.
-
Parameters operate autonomously without entanglement with constants or variables:
- P.csv : (Section III.A) Parameters work independently.
-
Parameters interact with constants. This category encompasses two code patterns:
-
C
$\rightarrow$ P.csv : (Section III.B) Parameters constrained by constants. -
P-C.csv: (Section III.B) Parameters and constants take equivalent space.
-
-
Parameter interacts with Variable, manifesting in three distinctive code patterns:
-
V
$\rightarrow$ P.csv: (Section III.B) Parameters is constrained by variables. -
P
$\rightarrow$ V.csv: (Section III.B) Variables is constrained by parameters. -
P-V.csv : (Section III.C) Parameters and variables take equicalent place.
-
-
Parameters intricately interact with both constants and variables, exemplified by a singular code pattern:
- P&C&V.csv : (Section III.D) Parameters, constants and variables take equicalent place.
Herein lies an explication of each row. Each of the row contains one code snippet of parameter. Noteworthy elements incorporated in each row comprise the code pattern (Section III, anwsering to RQ1 and RQ2), effect on software (Section IV, anwsering to RQ3) and potential problem (Section V, anwsering to RQ4) of the interaction code.
-
Base information of this code snippet (Section III, RQ1 and RQ2).
-
Software : Software name.
-
Parameter : Parameter name.
-
Code Snippet : Interaction code snippet of the corresponding parameter.
-
Code Pattern : Code pattern of the interaction.
-
-
Effect on software at runtime (Section IV, RQ3).
-
Overall Impact : Overall impact of this interaction code on software, e.g., performance, reliability and functionality and others (Section IV.A).
-
Effect on Software Behavior : How this interaction code affects software behaviors (Section IV.B).
-
How to Control Software Behavior : The way of controlling software behavior obtained based on the issues and semantics. It is corresponding to the classfication illustrated in Figure 4 (Section IV.B, Figure IV).
-
Special Effect on Software : Specail effect of this interaction code snippet on software, i.e., how this interaction affect resource utilization (Section IV.B).
-
-
Potential problems (Section V, RQ4).
-
Bad consequences : Bad consequences this interaction may lead to software, including runtime error, performance degradation and unexpected result (Section V.A).
-
Log Information : Log information of this interaction code (Section V.A).
-
On-the-fly Update :If this parameter support on-the-fly update (Section V.A).
-
The "Crisis" Behind Specific Interactions : Potential problem of the interaction (Section V.B).
-
Take hbase.region.store.parallel.put.print.threshold
for an example. This data row contain the following information:
hbase (software), hbase.region.store.parallel.put.print.threshold (parameter),
if (this.currentParallelPutCount.getAndIncrement() > this.parallelPutCountPrintThreshold) {
LOG.trace("tableName={}, encodedName={}, columnFamilyName={} is too busy!",
this.getTableName(), this.getRegionInfo().getEncodedName(), this.getColumnFamilyName());
} (code snippet)
P→V (code pattern), Performance (overall impact), Workload Adaption (effect on software behavior), Resource Limitation (how to control software behavior), Prevent excessive resource utilization (Special Effect on Software), Performance Degradation (Bad consequences),
LOG.trace("tableName={}, encodedName={}, columnFamilyName={} is too busy!",
this.getTableName(), this.getRegionInfo().getEncodedName(), this.getColumnFamilyName()); (log information)
no (On-the-fly Update), Inappropriate threshold in P→V (The "Crisis" Behind Specific Interactions).
There are totally 705 parameters that we sample from ten software (Section II).
Each file contains all the parameters sampled from the corresponding software. For instance, HBase.csv containts 35 parameters.
-
Parameter :Parameter name.
-
Type :The interaction type descriped in Section III.
-
On-the-fly Update :If this parameter support on-the-fly update.
Take binlog_order_commits
for an example: binlog_order_commits, P&V, yes.