Commit Graph

1130 Commits

Author SHA1 Message Date
Aikar
88826e053a Don't sleep between chunk saves
For some unknown reason, Minecraft is sleeping 10ms between every single chunk being saved to disk.
Under high chunk load/unload activity (lots of movement / teleporting), this causes the chunk unload queue
to build up in size.

This has multiple impacts:
1) Performance of the unload queue itself - The save thread is pretty ineffecient for how it accesses it
   By letting the queue get larger, checking and popping work off the queue can get less performant.
2) Performance of chunk loading - As with #1, chunk loads also have to check this queue when loading
   chunk data so that it doesn't load stale data if new data is pending write to disk.
3) Memory Usage - The entire chunk has been serialized to NBT, and now sits in this queue. This leads to
   elevated memory usage, and then the objects used in the serialization sit around longer than needed,
   resulting in promotion to Old Generation instead of dying young.

If there is work to do, then the thread should be doing its work, and only sleep when it is done.
2015-09-10 15:46:34 -05:00
Aikar
c95273f973 Optimize Chunk Saving Memory Allocation and Compression
Minecraft ineffeciently uses OutputStreams by calling .write(int) on the stream.
For Chunks, this is a DeflaterOutputStream, which allocates a single byte EVERY write.

This is causing the server to allocate tons of new byte[1] objects.
Additionally, this is very ineffecient for the Deflate process.

By Buffering Writes the same way it already is Buffering Reads, we will
write to the stream much more effeciently.

Also a more effecient RegionFile zero'ing for new chunks to speed up
new chunk generation.
2015-09-10 15:46:28 -05:00
md_5
ad15d9065d Rebuild patches. 2015-09-01 17:41:42 -05:00
md_5
38a38e00e6 SPIGOT-1117: Barrier blocks are transparent for xray purposes 2015-08-10 19:41:03 -05:00
Melair
f08d887fbf Ensure that inactiveTick on EntityItem obeys magic values for age and pickupDelay. 2015-07-31 18:04:11 -05:00
md_5
6a6ecc5d1d Update for latest CraftBukkit changes. 2015-07-30 22:11:20 -05:00
md_5
4e9d1b2b24 Update to Minecraft 1.8.8 (Pre-)Release. 2015-07-27 17:01:45 -05:00
Thinkofdeath
060c59ea95 SPIGOT-1050: Add a missing case in the disable usercache saving option 2015-07-23 18:24:16 -05:00
Aikar
d7307859fa Don't allow sendPacket once disconnect has been processed. 2015-07-23 04:38:39 -07:00
md_5
8ae7fb531a Clear Packet Queue on Disconnect 2015-07-23 04:38:32 -07:00
md_5
301396a116 Add note about BungeeCord when in offline mode.
See PR #10 for motivation.
2015-07-14 08:18:22 -07:00
md_5
8fecf733fe SPIGOT-997: Add restart API for server. 2015-07-14 08:18:22 -07:00
md_5
a457345b27 Use Map for getPlayer(String) lookup. 2015-07-14 08:18:21 -07:00
md_5
62112bb526 Rebuild patches for updates. 2015-07-14 08:18:21 -07:00
md_5
5683ee8585 Fix conflicts. 2015-07-14 08:17:50 -07:00
md_5
cf58c06c01 Rebuild patches. 2015-06-20 22:03:12 -05:00
Thinkofdeath
0aa4a6c88c Add a missing Spigot comment 2015-06-16 06:01:34 -07:00
Thinkofdeath
208f7a2e3b Remove a special case in vanilla's chunk saving as it interferes with our autosave changes 2015-06-16 06:01:21 -07:00
md_5
b59cf404af Fix patches from camera API 2015-06-10 22:26:46 -05:00
md_5
f5e295d087 Remove UserCache import as it is used now. 2015-06-07 15:47:52 -05:00
md_5
41e8bf6c5c Fix merge conflicts from access transform update. 2015-06-06 12:01:23 -05:00
md_5
a5bd933c3a Update to Minecraft 1.8.7 2015-06-05 05:26:00 -07:00
Antony Riley
1f6afb8934 Fix map decorations to store UUIDs internally. 2015-06-05 05:26:00 -07:00
md_5
7639a2f972 Remove custom links patch. 2015-06-05 05:26:00 -07:00
md_5
619f854054 SPIGOT-945 - random light ticking not called whenoptimal chunks is zero. 2015-06-05 05:25:59 -07:00
md_5
1865d856c6 Rebuild patches for scoreboard API pull to Bukkit. 2015-05-30 01:03:26 -05:00
Thinkofdeath
566d52f182 SPIGOT-929: Remove the hopper ticks patch 2015-05-27 23:54:24 -05:00
Thinkofdeath
060c7ee7c0 SPIGOT-927: Only schedule ticks for blocks in loaded chunks 2015-05-27 23:54:17 -05:00
md_5
015e038b89 Add back hopper tick scheduling
Tick a hopper only if certain conditions have changed i.e. inventory changes, redstone updates, etc.
2015-05-27 23:53:59 -05:00
md_5
f3abde1675 Fix crop growth patch 2015-05-27 23:53:48 -05:00
olivervscreeper
48c32652a2 Added growth rate modifier to NetherWart 2015-05-27 23:53:33 -05:00
Ginger Geek
e02c239421 Allow specifying location of spigot.yml
As requested here: http://www.spigotmc.org/threads/specify-location-of-spigot-yml.67747/
2015-05-27 23:53:24 -05:00
md_5
2c46441a7b Update to Minecraft 1.8.6 2015-05-25 15:24:33 -05:00
Thinkofdeath
e6c909c623 Update to 1.8.5 2015-05-23 12:03:12 -05:00
Thinkofdeath
033b54d5de Update to 1.8.4 2015-05-18 16:56:05 -05:00
Evan Haskell
7b3e9e5197 Fix tile tick capping variable becoming out of sync 2015-05-10 19:17:28 -05:00
md_5
5ce6c2914b Fix exiting due to count condition eating packets. 2015-04-21 17:27:48 -05:00
Thinkofdeath
cbef2f32fe Fix a deadlock that could happen in offline mode when shutting down the server 2015-04-21 17:27:42 -05:00
md_5
cf6a7ce46d Use CLQ for main thread tasks.
Means netty threads aren't blocked for long synchronisations whilst tasks are running.
2015-04-21 17:27:35 -05:00
Thinkofdeath
943a2a3782 Upstream merge 2015-04-18 16:00:01 -05:00
Thinkofdeath
ee319fcbb2 Improve NBTReadLimiter 2015-04-16 15:36:08 -05:00
Thinkofdeath
fbc208645c Upstream merge 2015-04-16 15:36:01 -05:00
md_5
7a214c95e6 Rebuild #3 2015-04-08 22:47:37 -05:00
md_5
8b5be7ad8e Rebuild #2 2015-04-08 22:47:31 -05:00
md_5
1bd341bf82 Rebuild #2 2015-04-08 22:47:25 -05:00
md_5
222fd361e3 Hash rebuild 2015-04-08 22:28:28 -05:00
md_5
335170cdb2 SPIGOT-750: Barrier blocks are transparent for xray purposes 2015-04-08 21:48:49 -05:00
Thinkofdeath
aa1203137a Patch rebuild 2015-04-06 17:27:54 -05:00
Thinkofdeath
0b9296ab07 Upstream merge 2015-03-28 17:51:29 -05:00
Thinkofdeath
3aef9e976f Upstream merge 2015-03-23 14:22:01 -05:00