<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/124601>124601</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [BOLT] Regression of ~20% when BOLT is used on Postgres17.2
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            BOLT
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          salvatoredipietro
      </td>
    </tr>
</table>

<pre>
    
### Description
Attempted to use optimize Postgres17.2 with BOLT but noticed regression of ~20% on throughput and latency

### Environment
- Operating System: Amazon Linux 2023
- Hardware: AWS m7g.2xlarge instance (ARM-based)
- BOLT version: c118864223c6309378cd704f3406533474c2759f
- Application used: PostgreSQL 17.2 (build locally)

### Steps to Reproduce
```bash
### SUT and DRV (2x m7g.2xl with AL2023)
# Update the system and install required dependencies
sudo dnf update -y && sudo dnf groupinstall -y "Development Tools" && sudo dnf install -y git readline-devel zlib-devel bison flex libicu-devel perf cmake ninja-build htop

# Clone and build Postgres 17.2 repo
cd ${HOME} && git clone -b REL_17_2 https://github.com/postgres/postgres.git
cd ${HOME}/postgres

# in case of BOLT instrumentation
# export LDFLAGS="$LDFLAGS -Wl,--emit-relocs";  export CFLAGS="$CFLAGS -fno-reorder-blocks-and-partition"

# Build and install
./configure && make -j8 && sudo make install


### SUT only
# Create postgres user and group on the system and data directory
sudo groupadd  postgres
sudo useradd -c "PostgreSQL Server" -g postgres  postgres
sudo mkdir -p /usr/local/pgsql/{data,log}
sudo chown -R postgres:postgres /usr/local/pgsql/{data,log}

# Initialize the database cluster and open port to remote DRV instance (change the subnet with your CIDR)
sudo -u postgres  /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
sudo sed  -E -i "s/^#?listen_addresses = .+$/listen_addresses = '*'/" /usr/local/pgsql/data/postgresql.conf 
echo "host    all             all 172.31.0.0/16            password" | sudo tee -a /usr/local/pgsql/data/pg_hba.conf > /dev/null

# Start the server
sudo -u postgres /usr/local/pgsql/bin/pg_ctl  -D /usr/local/pgsql/data -l /usr/local/pgsql/log/logfile start

# Create pgbench database and user and grant privileges
sudo -u postgres /usr/local/pgsql/bin/psql -c "CREATE USER pgbenchuser WITH PASSWORD 'pgbench123';"
sudo -u postgres /usr/local/pgsql/bin/psql -c "CREATE DATABASE pgbench OWNER pgbenchuser;"
sudo -u postgres /usr/local/pgsql/bin/psql -d pgbench -c "GRANT ALL PRIVILEGES ON DATABASE pgbench TO pgbenchuser;"
sudo -u postgres /usr/local/pgsql/bin/psql -d pgbench -c "GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO pgbenchuser;"
sudo -u postgres /usr/local/pgsql/bin/psql -d pgbench -c "ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO pgbenchuser;"


### DRV only
# Setting Postgres credential to connect to it
export PGHOST=172.31.x.x  # Change IP
export PGPORT=5432
export PGUSER=pgbenchuser
export PGPASSWORD=pgbench123
export PGDATABASE=pgbench

# To run pgbench:
/usr/local/pgsql/bin/pgbench -i -s 1000 pgbench  # Initialize

# Run workload
/usr/local/pgsql/bin/pgbench --client=64 --jobs=8 --time=600 --select-only --progress=10 pgbench
```

BOLT profile gathered with `sudo perf record -e cycles:u  -u postgres -o ${HOME}/perf.data -a -F4999 -- sleep 300`

### Results

Throughput results:
```bash
tps = 91k     # baseline
tps = 73k     # BOLT optimized
```

</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzEV1tz2roW_jXKyxoxRgYMDzw4AdrM0CYH6O5jR5YWRo2QXFnOpQ_nt5-RbMBp2t3p7DmzM5kEpHX59K2Llnhdq9Igzsn4mowXV7zxB-vmNdeP3FuHUlUKvbNXhZUvc5LkhKXtLyywFk5VXllDkjz3Ho-VRwneQlMj2Mqro_qOcG9rXzqsh9mAwZPyB7i-W--gaDwY65VACQ6DQK2sAbuH_7KEsDFYA_7gbFMeqsYDNxI092jES0DRB7I0j8pZc0TjSZJTuKvQca9MCduX2uORpDnkR_7dGlgr0zwDS1gaJd9zJ5-4wyjxeQvHrBywZ81diaBM7bkRCIRN880HWvAaJWGzqBhP8IguQA7KYjicTicjxlIxSZNZmk2FzJLRPh0lk3GajrKRYNl4to_KeVVpJXggLjAlg4GOpO1_1hB5ImxaNEpL0FZwrV9ax6-OvfVY1YHtDVbOykZg2J4k7W_B68Nr8U-7SOJi81ewzp5Pp21jkq8jK60blsKnSnKP4A8IdWQxKkdStAaH3xrlUILECo1EIxTWJMnrRlqQZg9Nq05fgLAJYRM475TONtXJTtxnC3xEbasQQNhZq2vC2Bu9nkqpPDjkUiuDVAZl-K5V0X0sVG0N7DU-g1aFEk23XqHbgzjyBwSjzFdOW4IP3lZnauFGW4PxqO3uKXnbqDisLElyIYGwEcmu3999WJJsccIacIlogBawWa6_DLMvDA7eVzVJc8JWhK1K5Q9NMRD2SNiq6qz3Pg5K5X_ioi98BqsMCB5Kbd8mZKDINYFG3lVlkMLnyjoP68Vqnb_bknRBGCNs1H0H-lkTdkMpHpWnDrUVgX6SXsNJ8-a14k2ntzeWOrROoqOFtuKhptxIWnHnVXTP2AXqdWSzl0IkyQeErYQ1e1U2Dk8cxvjQr9NX8Y-LF8U3lfBpB9bol1MMHYbcO_EVasxF1zH12r7yKqsl9xykcii8dS-nNI7SXEqAHvNxJxgMG1SE7O2V7hbdI7qQvbS8-H-jf3yQygGtgLBVUzvCVrHKQ4zL-lv4T7LrAIqwG23LEP5OUxzskwG6uZhM87OfP7HWUXVrlFdchzYdOAlSoc-B0E3tO9ZshQZiIngLDo_WY2wi_QYpDtyUXbdoCoO-bSovtnFwc7vYtH0lHoE2PWZ-CblQhrCVMsrLAuji14LxYJ3pGiUAXQJVIS6hqsh4GXIkXWlVezRfuJThoglkpQsYEHYdqoz9fJuwjLA8_l21HenvMFwK9JsehLQGkuQoDjZgOdjaAwCEBtb_Cd-HGRukw0EySAhbDSf97YrX9ZN1MnrPbtpi8IhA-e_RlF8OBe-QpMsgL_GRsJVpzkUUbxEeIhsC1ybvT8L0myhV5RfhNfw2TED1rwVCZsa_e6UR6oCq15W7ii4LNOJwSdOQnr3q5sZD5dSj0lhequ1PTlJ_011V32yW-W4Jn7bLzclv9PT5dvce7vPt9vPdJqZItzkMrSgj6XXb9v6550W-y6_z7fJ86rvPH19j-YfO5Nly6_fdJv-4g3y9hvvN7V-36-W75RbuPr4Fsrv7F1CElV1-vV5u4fYjbG_eLz_kUDWFVuL_Cyhf75YbWCxX-af1rg_qDYwL9LuPJ6y_gPbjDRb6ae8G26KP8-t5-hAOJZrQqkMTFtYYFLEfx2Ghu6fv372_2-5Iuug6yvPgOXTYFG7a7nx735e9v9sE2fEoZf3lkPAkXfRB95W6xL9IDOMofRY4JctF4FLFOwuuMSc-wkQU1n_TWrpQKKA1DJMkOUcHXt9fFzebxsCTdQ_acvkHHqjQKrwg0sVkBJR-tUVN0sUUKPXqiGE5SYDSGjUKT0OwgNLK2fhyCaSfofXH8BZWnM4qZ2NvK7k_YJid4xVJJknM0zidOhTWSaAI4kXoeLs38CqFqX07F6LbD9r-yoGuRrPZDCiFWiNWkCYXFJd022DdaN9NkrvLI8t1621ofnhK-Kq9FmfDh3g5BUOhC4cpvLedpZfteO7TQ1D-wMuVnKdyls74Fc6HWTpNkmQ0ZVeHuSiyYrQfTtg-5SJLxYwlclokMhWj8VTw8ZWas4SNkyHLhtl4NGKDLB3PZkxOi9moyPZpQkYJHrnSA60fjwPryitV1w3Oh2w0SYZXmheo6_jkZSxgDEU5Xly5eZCnRVPWZJSEmaC-WPDK6_hMjgrjBWx-9mh9OqDphvE4eMowbvZfwFeN0_O_eRIEf92_kF1fUfgwCAX4YaDpTvA4Z_8LAAD__y6Y7Ec">