You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/rfcs/042-compute-pageserver-communicator.md
+8-2Lines changed: 8 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -89,6 +89,8 @@ will work. That should make it easy to adapt to new PostgreSQL versions.
89
89
In the above example, I assumed a GetPage request, but everything applies to
90
90
other other request types like "smgrnblocks" too.
91
91
92
+
Q: How we are going to handle backend termination while it is waiting for response? Should we allow it or wait request completion? If PS is down, it can take quite long time during which user will not be able to interrupt the query.
93
+
92
94
### Prefetching
93
95
94
96
A backend can also issue a "blind" prefetch request. When a communicator
@@ -144,7 +146,7 @@ communicator process. But it makes sense to do at the same time:
144
146
145
147
- Switching to Rust in the communicator process makes it possible to use
146
148
existing libraries
147
-
149
+
148
150
- Using a library might help with managing the pool of pageserver connnection,
149
151
so we want need to implement that ourselves
150
152
@@ -158,6 +160,10 @@ communicator process. But it makes sense to do at the same time:
158
160
system, the process needs to execute all the I/O completion callbacks. They're
159
161
very short, but I still wonder if a single process can handle it.
160
162
163
+
- Goal is to sustain ~2.5GB/s bandwidth (typical EC2 NIC).
164
+
- John: I'd presume a single process to be capable of that if it's just passing buffers around. If we needed more than one in future it would probably be quite a small lift to make that happen (but I bet we never do). (I don't fully know what's involved in the execute all the I/O completion callbacks part though)
165
+
166
+
161
167
### Security implications (if relevant)
162
168
163
169
- We currently use libpq authentication with a JWT token. We can continue to use
@@ -190,7 +196,7 @@ Implentation phases:
190
196
191
197
- Implement a simple request / response interface in shared memory between the
192
198
backends and the communicator.
193
-
199
+
194
200
- Implement a minimalistic communicator: hold one connection to
195
201
pageserver/shard. No prefetching. Process one request at a time
0 commit comments