---
# System prepended metadata

title: ElaSQL Make Practice

---

# ElaSQL Make Practice

# Hot Counter

1. 把 .jar scp 到 /autobencher/jars/latest

3. 創建 package dir 並將 java.jdk 丟到 package

3. 改變 config file (squencer ip, server ip ...)
    - user_name = "db-under"
    - remote_work_dir = "auto-bencher-workspace"
    - package_path = "package/jdk-8u211-linux-x64.tar.gz"
    - sequencer = "-Xmx16g -Xms16g" # 16G Ram
    - servers = "-Xmx16g -Xms16g" # 16G Ram
    - clients = "-Xmx8g -Xms8g" # 8G Ram
    - sequencer = Sequencer IP
    - servers = [Server IPs]
    - clients = [Client IPs]

4. node src/main.js -c config-hermes.toml init -D debug mode

5. cp -r /opt/shared/hermes/parameters/
    - 這個參數對應平常在Eclipse裡面的properties，他會覆蓋過去。
    -
6. cd parameter/hermes/simple/ycsb-multi-tenants/

8. Vim load.toml 更改 jar_dir 對應你的 jars下的 latest
    - load.toml 裡面存在關於Load資料庫的基本設定，包括Sever數量、Client數量等等
    - Server_count: server 數量
    - Server_client_ratio: client/server 的比例
    - "org.elasql.bench.benchmarks.ycsb.ElasqlYcsbConstants.INIT_RECORD_PER_PART" = "100000"

9. 下指令，load testbed: 
    - d: database 名稱
    - p: load testbed 的 config
```
node src/main.js -c config-hermes.toml load -d hermes -p parameters/hermes/simple/ycsb-multi-tenants/load.toml
```

    
10. 改 benchmark.toml

    - Jar_dir = latest # 放 jars 的資料夾-
    - “org.elasql.schedule.tpart.TPartScheduler.SCHEDULE_BATCH_SIZE”=”200”
    - "org.elasql.bench.benchmarks.ycsb.ElasqlYcsbConstants.INIT_RECORD_PER_PART" = "100000" # 同 load.toml 的參數值

11. 下指令(benchmark): node src/main.js -c config-hermes.toml benchmark -d hermes -p parameters/hermes/google/default.toml

12. Ssh netdb<db-id>; cd auto-bencher workspace/;  tail server-0.log


# Google Workload

1. 改 parameters/hermes/google/default.toml
    - Jar_dir = latest # 放 jars 的資料夾-
    - "org.elasql.schedule.tpart.TPartScheduler.SCHEDULE_BATCH_SIZE"=”200”
    -"org.elasql.bench.benchmarks.ycsb.ElasqlYcsbConstants.INIT_RECORD_PER_PART" = "100000" # 同
    
2. 改 default.toml
    - Jar_dir = latest # 放 jars 的資料夾-
    - “org.elasql.schedule.tpart.TPartScheduler.SCHEDULE_BATCH_SIZE”=”200”
    - "org.elasql.bench.benchmarks.ycsb.ElasqlYcsbConstants.INIT_RECORD_PER_PART" = "100000"
    
3. 下指令(benchmark): 
```bash=
node src/main.js -c config-hermes.toml benchmark -d hermes -p parameters/hermes/google/default.toml
```

# Exec

node src/main.js -c config_hermes.toml exec --command "pkill -f java"

# Elasql Timer
1. Timer 的 implement 在 elasql.util
2. Timer timer = Timer.getLocalTimer()
    - timer.startComponentTimer("@LABEL") # 開始計時
    - timer.stopComponentTimer("@LABEL") # 停止計時
    - timer.reset() #重置計時器避免Thread重複利用造成的問題
    - timer.getComponentTime("@LABEL") # 抓時間
3. timer.AddtoGlobalStatistics() # 把 local timer 加到 global 

4. TimerStatistics.startReporting(); # 定期回報加到 global 的 timer，可設定頻率


# DB Machine Info

- Command: ssh db-under@140.114.85.15
- Pwd: db-under
- /opt/shared For 共享資料

192.168.1.#機器ID
|       | Client | Server | Sequencer |
| ----- | ------ | ------ | --------- |
| 聖諺 | 8, 9 | 26, 27, 30, 31     | 32     |
| 超偉 | 3, 4 | 16, 17, 18, 19     | 20     |
| 威宇 | 5, 7 | 21, 22, 23, 24     | 25     |



