ModernUO/Projects/Server/Server.csproj
Kamron Batman 80aff11a46
feat(network): consume IORingGroup 1.0.8 and expose send tuning
IORingGroup 1.0.8 allows more than one send in flight per socket. RIO
reports send completion on acknowledgement rather than on copy, so with a
single send in flight a connection was capped at one send per round trip
whenever it had data queued. On a 50ms-RTT shard that showed up as in-game
latency of 100-145ms whenever any data was flowing, against a 50ms idle
baseline; as little as 6 bytes of queued data was enough to hold the gate
shut. Local testing could not surface it: the same measurement at loopback
RTT is microseconds.

Adds two restart-time settings:

  network.maxOutstandingSends (default 32) - sends in flight per
  connection. Honoured by RIO only; other backends complete sends on copy
  and report 1. Costs a request-queue and completion-queue slot per send,
  not another buffer, since every outstanding send addresses a different
  range of the same registered buffer.

  network.sendBufferSize (default 256KB) - per-connection send buffer,
  coerced to a power of two of at least the platform allocation
  granularity. This is the lever for "send buffer exhausted" disconnects
  and the per-connection memory ceiling.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-27 22:55:22 -07:00

55 lines
3.4 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="Current">
<PropertyGroup>
<Product>ModernUO Core</Product>
<OutDir>..\..\Distribution</OutDir>
<PublishDir>..\..\Distribution</PublishDir>
<Version>0.0.0</Version>
<Configurations>Debug;Release;Analyze</Configurations>
<RootNamespace>Server</RootNamespace>
<PackageId>Server</PackageId>
</PropertyGroup>
<Target Name="CleanPub" AfterTargets="Clean">
<Message Text="Server: Removing distribution files..." />
<Delete Files="..\..\Distribution\$(AssemblyName)" ContinueOnError="true" />
<Delete Files="..\..\Distribution\$(AssemblyName).deps.json" ContinueOnError="true" />
<Delete Files="..\..\Distribution\$(AssemblyName).dll" ContinueOnError="true" />
<Delete Files="..\..\Distribution\$(AssemblyName).dll.config" ContinueOnError="true" />
<Delete Files="..\..\Distribution\$(AssemblyName).exe" ContinueOnError="true" />
<Delete Files="..\..\Distribution\$(AssemblyName).pdb" ContinueOnError="true" />
<Delete Files="..\..\Distribution\$(AssemblyName).runtimeconfig.dev.json" ContinueOnError="true" />
<Delete Files="..\..\Distribution\$(AssemblyName).runtimeconfig.json" ContinueOnError="true" />
<Delete Files="..\..\Distribution\ModernUO.Serialization.Annotations.dll" ContinueOnError="true" />
<Delete Files="..\..\Distribution\CommunityToolkit.HighPerformance.dll" ContinueOnError="true" />
<Delete Files="..\..\Distribution\IORingGroup.dll" ContinueOnError="true" />
<Delete Files="..\..\Distribution\ioring.dll" ContinueOnError="true" />
<Delete Files="..\..\Distribution\ref\$(AssemblyName).dll" ContinueOnError="true" />
<Delete Files="..\..\Distribution\Serilog.dll" ContinueOnError="true" />
<Delete Files="..\..\Distribution\Serilog.Sinks.Async.dll" ContinueOnError="true" />
<Delete Files="..\..\Distribution\Serilog.Sinks.Console.dll" ContinueOnError="true" />
<Delete Files="..\..\Distribution\LibDeflate.Bindings.dll" ContinueOnError="true" />
<Delete Files="..\..\Distribution\libdeflate.dll" ContinueOnError="true" />
<Delete Files="..\..\Distribution\libdeflate.dylib" ContinueOnError="true" />
<Delete Files="..\..\Distribution\System.IO.Hashing.dll" ContinueOnError="true" />
</Target>
<ItemGroup>
<ProjectReference Include="..\Logger\Logger.csproj" />
<PackageReference Include="IORingGroup" Version="1.0.8" />
<PackageReference Include="CommunityToolkit.HighPerformance" Version="8.4.2" />
<PackageReference Include="LibDeflate.Bindings" Version="1.0.3" />
<PackageReference Include="System.IO.Hashing" Version="10.0.10" />
<PackageReference Include="ModernUO.Serialization.Annotations" Version="2.14.2" />
<PackageReference Include="ModernUO.Serialization.Generator" Version="2.14.3" />
<PackageReference Update="Serilog" Version="4.4.0" />
</ItemGroup>
<ItemGroup>
<AdditionalFiles Include="Migrations/*.v*.json" />
<AssemblyAttribute Include="System.Runtime.CompilerServices.InternalsVisibleTo">
<_Parameter1>Server.Tests</_Parameter1>
</AssemblyAttribute>
<AssemblyAttribute Include="System.Runtime.CompilerServices.InternalsVisibleTo">
<_Parameter1>UOContent.Tests</_Parameter1>
</AssemblyAttribute>
</ItemGroup>
</Project>