Commit 69f4b04
benchmarks: price oversubscription and publication at scale
The first nightly with the interactive runtime showed reads isolated from
hydration and nothing else moving, and left three questions the benchmarks did
not ask. What a saturated interactive runtime does to maintenance, since two
runtimes are twice the worker threads on the same cores. What publishing every
index costs when there are hundreds of them and nobody reads. And whether
`PeekIsolationUnderExpensivePeeks` guards anything, since its two sides came
out identical.
`MaintenanceUnderPeekSaturation` loads an eight-worker replica, half the cores
of the nightly agents, with one join peek in flight per worker and two
hydration churn loops, while a writer advances a small materialized view. The
measured query reads that view strict serializable from a separate one-worker
cluster, so it cannot answer before the view's write frontier passes the write
and nothing else competes with it: its latency is the view's maintenance lag
under the peek load. Read on the loaded replica it would instead queue behind
the joins on the runtime that serves peeks, which is what the join loops' own
latency reports.
`ManyIndexesIdle` and `ManyIndexesRestart` publish two hundred indexed views
over one table, each a distinct arrangement. The first measures one lookup and,
through the clusterd memory column, the resident cost of two hundred
publications. The second restarts the replica and waits for a read that imports
every index, so every publication is rendered and bound again on the way up.
`ManyReexportsIdle` is the other shape: two hundred indexes on one relation and
key share one arrangement and re-export it, each under its own publication.
`PeekIsolationUnderExpensivePeeks` walks five times as many rows half again as
often, about 60% of the worker where the old sizing measured under 10%, at which
the lookups did not notice the walks. Its docstring now says what it guards:
both queries are peeks, so it measures how the serving runtime interleaves
them, not the split between peeks and maintenance.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VDm7opomJLxbNUEP3r9BLk1 parent 7ae0458 commit 69f4b04
2 files changed
Lines changed: 253 additions & 11 deletions
File tree
- misc/python/materialize
- feature_benchmark/scenarios
- parallel_benchmark
Lines changed: 113 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
20 | | - | |
21 | | - | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
22 | 26 | | |
23 | 27 | | |
24 | 28 | | |
| |||
103 | 107 | | |
104 | 108 | | |
105 | 109 | | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
| 13 | + | |
13 | 14 | | |
14 | 15 | | |
15 | 16 | | |
| |||
1528 | 1529 | | |
1529 | 1530 | | |
1530 | 1531 | | |
| 1532 | + | |
| 1533 | + | |
| 1534 | + | |
| 1535 | + | |
1531 | 1536 | | |
1532 | 1537 | | |
1533 | 1538 | | |
1534 | 1539 | | |
1535 | 1540 | | |
1536 | 1541 | | |
1537 | 1542 | | |
1538 | | - | |
1539 | | - | |
1540 | | - | |
| 1543 | + | |
| 1544 | + | |
| 1545 | + | |
| 1546 | + | |
1541 | 1547 | | |
1542 | 1548 | | |
1543 | 1549 | | |
| |||
1571 | 1577 | | |
1572 | 1578 | | |
1573 | 1579 | | |
1574 | | - | |
| 1580 | + | |
1575 | 1581 | | |
1576 | 1582 | | |
1577 | 1583 | | |
| |||
1593 | 1599 | | |
1594 | 1600 | | |
1595 | 1601 | | |
1596 | | - | |
| 1602 | + | |
1597 | 1603 | | |
1598 | 1604 | | |
1599 | 1605 | | |
| |||
1740 | 1746 | | |
1741 | 1747 | | |
1742 | 1748 | | |
1743 | | - | |
1744 | | - | |
1745 | | - | |
1746 | | - | |
| 1749 | + | |
| 1750 | + | |
| 1751 | + | |
1747 | 1752 | | |
1748 | 1753 | | |
1749 | 1754 | | |
| |||
1810 | 1815 | | |
1811 | 1816 | | |
1812 | 1817 | | |
| 1818 | + | |
| 1819 | + | |
| 1820 | + | |
| 1821 | + | |
| 1822 | + | |
| 1823 | + | |
| 1824 | + | |
| 1825 | + | |
| 1826 | + | |
| 1827 | + | |
| 1828 | + | |
| 1829 | + | |
| 1830 | + | |
| 1831 | + | |
| 1832 | + | |
| 1833 | + | |
| 1834 | + | |
| 1835 | + | |
| 1836 | + | |
| 1837 | + | |
| 1838 | + | |
| 1839 | + | |
| 1840 | + | |
| 1841 | + | |
| 1842 | + | |
| 1843 | + | |
| 1844 | + | |
| 1845 | + | |
| 1846 | + | |
| 1847 | + | |
| 1848 | + | |
| 1849 | + | |
| 1850 | + | |
| 1851 | + | |
| 1852 | + | |
| 1853 | + | |
| 1854 | + | |
| 1855 | + | |
| 1856 | + | |
| 1857 | + | |
| 1858 | + | |
| 1859 | + | |
| 1860 | + | |
| 1861 | + | |
| 1862 | + | |
| 1863 | + | |
| 1864 | + | |
| 1865 | + | |
| 1866 | + | |
| 1867 | + | |
| 1868 | + | |
| 1869 | + | |
| 1870 | + | |
| 1871 | + | |
| 1872 | + | |
| 1873 | + | |
| 1874 | + | |
| 1875 | + | |
| 1876 | + | |
| 1877 | + | |
| 1878 | + | |
| 1879 | + | |
| 1880 | + | |
| 1881 | + | |
| 1882 | + | |
| 1883 | + | |
| 1884 | + | |
| 1885 | + | |
| 1886 | + | |
| 1887 | + | |
| 1888 | + | |
| 1889 | + | |
| 1890 | + | |
| 1891 | + | |
| 1892 | + | |
| 1893 | + | |
| 1894 | + | |
| 1895 | + | |
| 1896 | + | |
| 1897 | + | |
| 1898 | + | |
| 1899 | + | |
| 1900 | + | |
| 1901 | + | |
| 1902 | + | |
| 1903 | + | |
| 1904 | + | |
| 1905 | + | |
| 1906 | + | |
| 1907 | + | |
| 1908 | + | |
| 1909 | + | |
| 1910 | + | |
| 1911 | + | |
| 1912 | + | |
| 1913 | + | |
| 1914 | + | |
| 1915 | + | |
| 1916 | + | |
| 1917 | + | |
| 1918 | + | |
| 1919 | + | |
| 1920 | + | |
| 1921 | + | |
| 1922 | + | |
| 1923 | + | |
| 1924 | + | |
| 1925 | + | |
| 1926 | + | |
| 1927 | + | |
| 1928 | + | |
| 1929 | + | |
| 1930 | + | |
| 1931 | + | |
| 1932 | + | |
| 1933 | + | |
| 1934 | + | |
| 1935 | + | |
| 1936 | + | |
| 1937 | + | |
| 1938 | + | |
| 1939 | + | |
| 1940 | + | |
| 1941 | + | |
| 1942 | + | |
| 1943 | + | |
0 commit comments