Add Prettier and ESLint tooling (Refs #77)
This commit is contained in:
@@ -20,16 +20,16 @@ active, interrupted and nonqualifying records.
|
||||
On the local Intel i5-8279U / Node 25.9.0 / SQLite 3.49.2 test environment, three
|
||||
measured runs after warmup gave these median query times on the large fixture:
|
||||
|
||||
| Request | Before | After |
|
||||
| --- | ---: | ---: |
|
||||
| Request | Before | After |
|
||||
| ------------------------ | -------: | -----: |
|
||||
| Highest round, all games | 1,717 ms | 829 ms |
|
||||
| Total kills, all games | 1,555 ms | 858 ms |
|
||||
| One game | 899 ms | 491 ms |
|
||||
| One map | 345 ms | 224 ms |
|
||||
| Player search | 1,515 ms | 757 ms |
|
||||
| Deep page | 1,421 ms | 752 ms |
|
||||
| Headshot percentage | 1,444 ms | 760 ms |
|
||||
| Exact player rank | 1,524 ms | 554 ms |
|
||||
| Total kills, all games | 1,555 ms | 858 ms |
|
||||
| One game | 899 ms | 491 ms |
|
||||
| One map | 345 ms | 224 ms |
|
||||
| Player search | 1,515 ms | 757 ms |
|
||||
| Deep page | 1,421 ms | 752 ms |
|
||||
| Headshot percentage | 1,444 ms | 760 ms |
|
||||
| Exact player rank | 1,524 ms | 554 ms |
|
||||
|
||||
The small fixture's unfiltered request fell from 41 to 30 ms. All 150 additional
|
||||
small-fixture parity cases and 22 timed small/large request cases matched the
|
||||
|
||||
@@ -26,16 +26,16 @@ The live host kernel, Wine version, image digest, installed scripts/plugins, CPU
|
||||
|
||||
## Options
|
||||
|
||||
| Option | Expected effect on idle CPU | Availability and gameplay tradeoff | Evidence and priority |
|
||||
| --- | --- | --- | --- |
|
||||
| 1. Enable and verify NTSYNC | Potentially substantial if Wine synchronization dominates | Intended to retain normal joins and gameplay; compatibility testing required | Official Wine/kernel support; Plutonium operator anecdote. First trial |
|
||||
| 2. Audit busy-wait settings, scripts, and helpers | Small to substantial, depending on the actual cause | Usually compatible with keeping lobbies online | Documented settings plus diagnostic experiments. First trial |
|
||||
| 3. Apply CPU quotas only when empty | Enforceable ceiling on each empty container's CPU time | Excessive throttling can delay joins, RCON, and heartbeats | Docker-supported mechanism; automatic policy needs development |
|
||||
| 4. Run fewer spare lobbies | Removes the stopped instances' process CPU use | Fewer immediately available lobbies | Predictable mechanism; best larger saving if acceptable |
|
||||
| 5. Start on request or on a schedule | Removes process CPU use during stopped periods | Players wait for startup; stopped servers cannot provide live listings | Practical alternative for infrequent maps or private sessions |
|
||||
| 6. Pause and resume containers | Suspends their process execution while retaining memory | Server cannot answer while paused; resume behavior needs validation | Docker supports pause; Plutonium behavior unproven |
|
||||
| 7. Wake through a UDP gateway | Could combine stopped backends with automated wakeup | Protocol, listing, session, and timeout problems | Experimental; substantially harder for T5 |
|
||||
| 8. Change the host/runtime or develop engine idling | Potentially substantial, cause dependent | Migration cost or ongoing engine compatibility work | Conditional alternatives after profiling |
|
||||
| Option | Expected effect on idle CPU | Availability and gameplay tradeoff | Evidence and priority |
|
||||
| --------------------------------------------------- | --------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
|
||||
| 1. Enable and verify NTSYNC | Potentially substantial if Wine synchronization dominates | Intended to retain normal joins and gameplay; compatibility testing required | Official Wine/kernel support; Plutonium operator anecdote. First trial |
|
||||
| 2. Audit busy-wait settings, scripts, and helpers | Small to substantial, depending on the actual cause | Usually compatible with keeping lobbies online | Documented settings plus diagnostic experiments. First trial |
|
||||
| 3. Apply CPU quotas only when empty | Enforceable ceiling on each empty container's CPU time | Excessive throttling can delay joins, RCON, and heartbeats | Docker-supported mechanism; automatic policy needs development |
|
||||
| 4. Run fewer spare lobbies | Removes the stopped instances' process CPU use | Fewer immediately available lobbies | Predictable mechanism; best larger saving if acceptable |
|
||||
| 5. Start on request or on a schedule | Removes process CPU use during stopped periods | Players wait for startup; stopped servers cannot provide live listings | Practical alternative for infrequent maps or private sessions |
|
||||
| 6. Pause and resume containers | Suspends their process execution while retaining memory | Server cannot answer while paused; resume behavior needs validation | Docker supports pause; Plutonium behavior unproven |
|
||||
| 7. Wake through a UDP gateway | Could combine stopped backends with automated wakeup | Protocol, listing, session, and timeout problems | Experimental; substantially harder for T5 |
|
||||
| 8. Change the host/runtime or develop engine idling | Potentially substantial, cause dependent | Migration cost or ongoing engine compatibility work | Conditional alternatives after profiling |
|
||||
|
||||
### 1. Test NTSYNC before treating Wine overhead as unavoidable
|
||||
|
||||
@@ -155,15 +155,15 @@ First record the actual host/VM details, kernel, image digest, Wine version, Plu
|
||||
|
||||
Use one representative instance from each game, then expand successful changes to other maps. Suggested measurement windows are 10–15 minutes after startup settles, repeated after players join and all leave. These are proposed test windows, not product requirements.
|
||||
|
||||
| Test | What it resolves |
|
||||
| --- | --- |
|
||||
| Normal deployment, empty immediately after startup | Initial baseline |
|
||||
| Same instance after the last player disconnects | Whether work accumulates or persists after play |
|
||||
| Minimal scripts/plugins on the same map | Contribution from custom behavior |
|
||||
| Verified NTSYNC versus current synchronization path | Wine synchronization contribution |
|
||||
| One idle quota at a time, with repeated fresh joins | Lowest useful ceiling without degraded access |
|
||||
| Test | What it resolves |
|
||||
| ---------------------------------------------------------- | --------------------------------------------------------- |
|
||||
| Normal deployment, empty immediately after startup | Initial baseline |
|
||||
| Same instance after the last player disconnects | Whether work accumulates or persists after play |
|
||||
| Minimal scripts/plugins on the same map | Contribution from custom behavior |
|
||||
| Verified NTSYNC versus current synchronization path | Wine synchronization contribution |
|
||||
| One idle quota at a time, with repeated fresh joins | Lowest useful ceiling without degraded access |
|
||||
| Stop/start or pause/resume after brief and long inactivity | Real wake latency, listing recovery, and join reliability |
|
||||
| Occupied session with ordinary and high-round gameplay | Whether the change preserves active performance |
|
||||
| Occupied session with ordinary and high-round gameplay | Whether the change preserves active performance |
|
||||
|
||||
Collect container CPU averages and peaks, process/thread CPU, memory, quota throttling, RCON response times/failures, external browser visibility, first-join success, and time until players can actually play. Measure the whole host as well to catch work shifted into a proxy or management process. Use unprofiled runs for final CPU comparisons because tracing itself adds overhead.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user