BG is a benchmark to evaluate performance of a data store for interactive social networking actions and sessions. These actions and sessions either read or update a very small amount of the entire data set.
Yazeed Alabdulkarim, Sumita Barahmand, and Shahram Ghandeharizadeh
The documentation for this version of BG is similar to the one posted at bgbenchmark.org with the following extensions:
-
Three decentralized techniques for generating meaningful actions.
-
Disjoint Database scales superlinearly as a function of nodes.
-
Integrated Database (Retain and Delegate) maybe more suitable to evaluate certain classes of data stores, see introduction of database lab technical report 2018-01.
-
A hybrid technique that combines the strengths of Disjoint and Integrated Database.
For a complete description, see database lab technical report 2018-01.
Running this version of BG is similar to the one posted at bgbenchmark.org with the following additional parameters:
Parameter | Value | Description |
benchmarkingmode | disjoint, retain, delegate, hybridretain, or hybriddelegate | Specifies the technique for generating actions. The default is disjoint |
clients | IP1:Port1, IP2:Port2,.... | List of IP and port pairs for BG clients |
numsockets | An integer greater than 0 | The initial number of TCP sockets to created with every other BG client with Integrated Database and hybrid techniques. The default value is 10 |
For completeness, we provide a description of all BG parameters below in two tables. The first table lists essential parameters that must be specified when running BG. The second table lists the optional parameters.
Here are the essential parameters that must be specified when running this version of BG:
Parameter | Value | Description |
-db | The name of the data store client class | Identifies the data store interface layer which is going to be benchmarked |
threadcount | An integer greater than 0 | The simultaneous socialites emulating members issuing requests |
maxexecutiontime | An integer greater than 0 | Identifies the maximum benchmarking execution time in seconds |
numclients | An integer greater than 0 | The number of BG Clients in the system. If not specified numclients=1 will be assumed |
machineid | An integer greater than or equal to 0 | The machineid is the BG Client identifier and should start from 0. It represents the index of this client in the clients’ IP and port list |
confperc | A value between 0 to 1 | The percentage of confirmed friendships among all the friendship relationships created for members |
initapproach | querydata/deterministic | "querydata" instructs BG to query the initial state of the data store before running benchmark. "deterministic" instructs BG to construct the intial state of the data store using information about the load phase. This parameter should be accompanied with resourcecountperuser, friendcountperuser, confper, numloadthreads and useroffset. |
friendcountperuser | An even integer number greater than or equal to zero | The number of friendship relationships per member (This can be confirmed friendships, generated friendships or pending friendships). |
resourcecountperuser | An integer number greater than or equal to zero | The number of resources created by each member |
numloadthreads | An integer number greater than or equal to zero | The number of threads used in the load phase per BG client. This parameter should be accompanied with the initapproach=deterministic parameter. |
usercount | An integer greater than 0 | Number of members in the data store. The members are assigned memberids in a sequential manner. |
useroffset | An integer number greater than or equal to zero | The smallest memberid in the data store. Can be used when using multiple BG Clients to populate the data store. It will be considered as 0 if not specified |
zipfianmean | A value between 0 to 1, defining the skewness of the dzipfian distribution. | If the dzipfian distribution is specified the mean specified by this parameter will be used. The default value is 0.27 |
warmup | An integer greater than or equal to zero | The number of warmup operations issued to the data store. These operations are issued before the actual benchmarking phase starts and are not considered in the measurements. The default value for this is 0 operations. |
warmupthreads | An integer greater than zero | Identifies the number of threads to issue the warmup operations |
-P | Name of the workload file | The name of the workload file containing the runtime workload parameters. |
requestdistribution | uniform/dzipfian/latest | Identifies the distribution of the members generating requests. |
Here are the optional parameters to customize BG:
Parameter | Value | Description |
AcceptFrdReqSession | A value between 0 to 1 | Identifies the portion of requests performing the session containing the following actions in the specified order: VP, VTR, LF, VFR, AFR, LF, VFR. |
AcceptFriendReqAction | A value between 0 to 1 | Identifies the portion of requests performing the AFR action. |
ViewFrdProfileSession | A value between 0 to 1 | Identifies the portion of requests performing the session containing the following actions in the specified order: VP, VTR, LF, VP. |
ViewSelfProfileSession | A value between 0 to 1 | Identifies the portion of requests performing the session containing the following actions in the specified order: VP, VTR, VCR. |
DeleteCmtOnResSession | A value between 0 to 1 | Identifies the portion of requests performing the session containing the following actions in the specified order: VP, VTR, VP, VTR ,VCR, DCR, VCR. |
DeleteCommentOnResourceAction | A value between 0 to 1 | Identifies the portion of requests performing the DCR action. |
PostCmtOnResSession | A value between 0 to 1 | Identifies the portion of requests performing the session containing the following actions in the specified order: VP, VTR, VP, VTR ,VCR, PCR, VCR. |
expectedlatency | A value greater than or equal to 0 | The BG client uses the defined expected latency to compute the confidence for the various operations it performs in the benchmarking phase. |
exportfile | File name | The name of the output file. If the output file is not specified the output will be written to the console. |
InviteFrdSession | A value between 0 to 1 | Identifies the portion of requests performing the session containing the following actions in the specified order: VP, VTR, LF, IF, VFR |
ViewCommentsOnResourceAction | A value between 0 to 1 | Identifies the portion of requests performing the VCR action |
ListFriendsAction | A value between 0 to 1 | Identifies the portion of requests performing the LF action |
ViewFriendReqAction | A value between 0 to 1 | Identifies the portion of requests performing the VFR action |
ViewProfileAction | A value between 0 to 1 | Identifies the portion of requests performing the VP action |
ViewTopKResourcesAction | A value between 0 to 1 | Identifies the portion of requests performing the VTR action |
imagesize | An integer number greater than 0 | Identifies the image size in KB to be inserted for members in the load phase. BG will insert a random set of bytes corresponding to the image size specified for each member as an image. BG always inserts 2KB random bytes as the thumbnail image for the members. |
insertimage | True/False | Identifies if images will be inserted/retrieved for members or not. These images will be used as thumbnails as well as member profile images. |
interarrivaltime | An integer greater than or equal to zero | the time between the various user sessions. 0 will be considered if not specified. |
InviteFriendAction | A value between 0 to 1 | Identifies the portion of requests performing the IF action |
logdir | log directory path | Specifies the directory for the log records. In the benchmarking phase the log files will be created in this directory and will be used in the validation phase. |
monitor | An integer value greater than or equal to 0 | The duration at which the observed throughput is reported to the coordinator. This is used when the BG Client is in the rating mode. |
operationcount | An integer greater than 0 | Number of social operations(actions/sessions) to be performed. |
port | A valid port | The port number on which the BG clients starts communicating with the BG listener. |
PostCommentOnResourceAction | A value between 0 to 1 | Identifies the portion of requests performing the PCR action. |
probs | A string containing the various BG client rates separated by “@” and accompanied by a terminating “@”. i.e. If there are 3 clients we will have something similar to 0.3@0.6@0.1@ | This is used for multi-node benchmarking. It specifies the rate at which all BG Clients issue request and is used in the generation of fragments for the dzipfian distribution. |
ratingmode | True/false | If the BG Client is used for rating and needs to coordinate with a coordinator this parameter needs to be set to true. |
RejectFrdReqSession | A value between 0 to 1 | Identifies the portion of requests performing the session containing the following actions in the specified order: VP, VTR, LF, VFR, RFR, LF, VFR. |
RejectFriendReqAction | A value between 0 to 1 | Identifies the portion of requests performing the RFR action. |
thinktime | An integer greater than or equal to zero | The think time between emulated member clicks. 0 will be considered if not specified. |
ThawFrdshipSession | A value between 0 to 1 | Identifies the portion of requests performing the session containing the following actions in the specified order: VP, VTR, LF, TF, LF. |
ThawFriendshipAction | A value between 0 to 1 | Identifies the portion of requests performing the TF action. |
validation.driver | database driver | Used when validation using the RDBMS. Identifies the database driver. |
validation.passwd | database password | Used when validation using the RDBMS. Identifies the database password. |
validation.url | database url | Used when validation using the RDBMS. Identifies the database URL. |
validation.user | database username | Used when validation using the RDBMS. Identifies the database username. |
validationapproach | RDBMS/interval | Identifies the validation approach to be used. The interval option uses the interval tree approach to validate the log records. |
validationblock | An integer greater than zero | The number of log records validated by each validation thread. |
validationthreads | An integer greater than zero | Number of simultaneous threads used to validate log records. |
enablelogging | true/false, enables generation of log records. | If the enablelogging is set to true, log files will be generated for actions which can then be used to compute the amount of stale/unpredictable data. |
-load | None | Instructs BG to populate the data store. |
-loadindex | None | Instructs BG to populate the data store and create the appropriate index structures. |
-s | None | If specified, BG will report throughput and the observed average response time for the operations performed for 10 second windows throughout the benchmark execution. |
-schema | None | Instructs BG to create the data store schema. |
-testdb | None | Instructs BG to test the connection to the data store. |
-stats | None | Instructs BG to query the status of the data store. |