aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2012-10-11 23:58:37 +0100
committerJustin Clark-Casey (justincc)2012-10-11 23:58:37 +0100
commit2e9ef015f7b73a3942011a36a9f94ce59d848dc0 (patch)
tree7045611afacf2b4be3e5543c142a1fd9c047de2f /OpenSim/Region
parentMerge branch 'master' of ssh://opensimulator.org/var/git/opensim (diff)
downloadopensim-SC-2e9ef015f7b73a3942011a36a9f94ce59d848dc0.zip
opensim-SC-2e9ef015f7b73a3942011a36a9f94ce59d848dc0.tar.gz
opensim-SC-2e9ef015f7b73a3942011a36a9f94ce59d848dc0.tar.bz2
opensim-SC-2e9ef015f7b73a3942011a36a9f94ce59d848dc0.tar.xz
Fix packetpool for ImprovedTerseObjectUpdate packets.
These were neither being returned or in many places reused. Getting packets from a pool rather than deallocating and reallocating reduces memory churn which in turn reduces garbage collection time and frequency.
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs14
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs2
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/PacketPool.cs4
3 files changed, 15 insertions, 5 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
index 62f51d9..dc88686 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
@@ -3922,7 +3922,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
3922 { 3922 {
3923 List<ImprovedTerseObjectUpdatePacket.ObjectDataBlock> blocks = terseAgentUpdateBlocks.Value; 3923 List<ImprovedTerseObjectUpdatePacket.ObjectDataBlock> blocks = terseAgentUpdateBlocks.Value;
3924 3924
3925 ImprovedTerseObjectUpdatePacket packet = new ImprovedTerseObjectUpdatePacket(); 3925 ImprovedTerseObjectUpdatePacket packet
3926 = (ImprovedTerseObjectUpdatePacket)PacketPool.Instance.GetPacket(PacketType.ImprovedTerseObjectUpdate);
3927
3926 packet.RegionData.RegionHandle = m_scene.RegionInfo.RegionHandle; 3928 packet.RegionData.RegionHandle = m_scene.RegionInfo.RegionHandle;
3927 packet.RegionData.TimeDilation = timeDilation; 3929 packet.RegionData.TimeDilation = timeDilation;
3928 packet.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[blocks.Count]; 3930 packet.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[blocks.Count];
@@ -3967,7 +3969,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP
3967 { 3969 {
3968 List<ImprovedTerseObjectUpdatePacket.ObjectDataBlock> blocks = terseUpdateBlocks.Value; 3970 List<ImprovedTerseObjectUpdatePacket.ObjectDataBlock> blocks = terseUpdateBlocks.Value;
3969 3971
3970 ImprovedTerseObjectUpdatePacket packet = new ImprovedTerseObjectUpdatePacket(); 3972 ImprovedTerseObjectUpdatePacket packet
3973 = (ImprovedTerseObjectUpdatePacket)PacketPool.Instance.GetPacket(
3974 PacketType.ImprovedTerseObjectUpdate);
3975
3971 packet.RegionData.RegionHandle = m_scene.RegionInfo.RegionHandle; 3976 packet.RegionData.RegionHandle = m_scene.RegionInfo.RegionHandle;
3972 packet.RegionData.TimeDilation = timeDilation; 3977 packet.RegionData.TimeDilation = timeDilation;
3973 packet.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[blocks.Count]; 3978 packet.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[blocks.Count];
@@ -12286,7 +12291,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP
12286 ushort timeDilation = Utils.FloatToUInt16(TIME_DILATION, 0.0f, 1.0f); 12291 ushort timeDilation = Utils.FloatToUInt16(TIME_DILATION, 0.0f, 1.0f);
12287 12292
12288 12293
12289 ImprovedTerseObjectUpdatePacket packet = new ImprovedTerseObjectUpdatePacket(); 12294 ImprovedTerseObjectUpdatePacket packet
12295 = (ImprovedTerseObjectUpdatePacket)PacketPool.Instance.GetPacket(
12296 PacketType.ImprovedTerseObjectUpdate);
12297
12290 packet.RegionData.RegionHandle = m_scene.RegionInfo.RegionHandle; 12298 packet.RegionData.RegionHandle = m_scene.RegionInfo.RegionHandle;
12291 packet.RegionData.TimeDilation = timeDilation; 12299 packet.RegionData.TimeDilation = timeDilation;
12292 packet.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1]; 12300 packet.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1];
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
index ab670a7..6d2cda5 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
@@ -420,6 +420,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
420 byte[] data = packet.ToBytes(); 420 byte[] data = packet.ToBytes();
421 SendPacketData(udpClient, data, packet.Type, category, method); 421 SendPacketData(udpClient, data, packet.Type, category, method);
422 } 422 }
423
424 PacketPool.Instance.ReturnPacket(packet);
423 } 425 }
424 426
425 /// <summary> 427 /// <summary>
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/PacketPool.cs b/OpenSim/Region/ClientStack/Linden/UDP/PacketPool.cs
index 3d9f94f..fd6b0ed 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/PacketPool.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/PacketPool.cs
@@ -47,7 +47,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
47 private PercentageStat m_packetsReusedStat = new PercentageStat( 47 private PercentageStat m_packetsReusedStat = new PercentageStat(
48 "PacketsReused", 48 "PacketsReused",
49 "Packets reused", 49 "Packets reused",
50 "simulator", 50 "clientstack",
51 "simulator", 51 "simulator",
52 StatVerbosity.Debug, 52 StatVerbosity.Debug,
53 "Number of packets reused out of all requests to the packet pool"); 53 "Number of packets reused out of all requests to the packet pool");
@@ -55,7 +55,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
55 private PercentageStat m_blocksReusedStat = new PercentageStat( 55 private PercentageStat m_blocksReusedStat = new PercentageStat(
56 "BlocksReused", 56 "BlocksReused",
57 "Blocks reused", 57 "Blocks reused",
58 "simulator", 58 "clientstack",
59 "simulator", 59 "simulator",
60 StatVerbosity.Debug, 60 StatVerbosity.Debug,
61 "Number of data blocks reused out of all requests to the packet pool"); 61 "Number of data blocks reused out of all requests to the packet pool");