Advertisement
keybounce

Start up "Minecraft" with memory allocation for dynamic maps

Dec 11th, 2012
344
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 5.28 KB | None | 0 0
  1. #!/bin/bash
  2. # Startup for minecraft when using a lot of memory for
  3. # dynamic maps for re-rendering.
  4.  
  5. cd "$( dirname "$0" )"
  6.  
  7. # This is set for 2-3 players.
  8. ## Important: Higher "New" / "Eden" generally improves performance with little to no penalty.
  9. ## Garbage collection in Eden depends on the living objects (which are important), not on junk.
  10. ## Higher heap/"tenured" means longer garbage collections. Garbage collecting here depends on
  11. ## the size of tenured space -- so the more junk, the longer.
  12. ##
  13.  
  14. unused="\
  15.     -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution \
  16.     -XX:+PrintCommandLineFlags -XX:+PrintGCDetails -Xloggc:GC.log \
  17.     -XX:+CITime -XX:+PrintCompilation \
  18.     -XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses \
  19.     -XX:+TraceClassLoading -XX:+TraceClassUnloading \
  20. "
  21.  
  22. # 7% min free is too low.
  23. # No indication that "max free" is even listened to -- I've never seen the heap shrink.
  24.  
  25. # Remember the goal: Memory when needed, but keep the number of pages allocated low enough that
  26. # swap does not clobber the other running programs.
  27. #
  28. # If you have a 1 or 2 processor system: add incremental.
  29. # ** UPDATE: Looks like incremental may help a lot more than it should.
  30. # Need to test -- one feedback so far that it makes big help on a 8 CPU system
  31. #
  32. # Dynamic map wants a very large amount. It looks like it wants survivor size
  33. # of at least 40 *2 = 80 mib; that's up from the previous 12.5.
  34. # Correction: During render, it wants at least 60, if not 70 * 2 = 120 to 150 mib. For both survivors,
  35. # plus another 400+ for eden. That's crazy.
  36. #
  37. # Update: At least 100 MB during render, for temporaries. So survivor space of 200 MB...
  38. #
  39. # The best way to think of "survivor size": How much temporary stuff will you have at a time. If you use
  40. # more temporary stuff than this, some of it will be considered "permanent".
  41. #
  42. # Old was: New 100, survivor 6, so 6+2=8 pieces. Each is 12.5. Target survivor is half that -- 6.25. We want 35
  43. # instead of 6.25, or 70 instead of 12.5. Thats ... a lot.
  44. #
  45. # If we have 6 pieces -- 2 survivors, and 4 for eden -- and each piece is 70, that's 420Mib for new.
  46. # Survivor ratio is 6-2 = 4.
  47. #
  48. # If you don't like doing that calculation, tell oracle to fix sun's old stuff.
  49. # So lets see if we can play with dynmap.
  50. # 200 per survivor, 600 for eden.
  51. # That's 1 gig for new, survivor ratio 3.
  52.  
  53. #   -Xms165m -Xmx500m \
  54. #   -XX:NewSize=100m -XX:SurvivorRatio=6 \
  55.  
  56. java \
  57.     -d32 -server \
  58.     -XX:CompileThreshold=3000 \
  59.     -XX:+UseConcMarkSweepGC -XX:+UseParNewGC \
  60.     -XX:MaxHeapFreeRatio=20 \
  61.     -XX:MinHeapFreeRatio=12 \
  62.     -XX:NewSize=1g -XX:SurvivorRatio=3 \
  63.     -Xms1300m -Xmx2000m \
  64.     -XX:MaxTenuringThreshold=4 \
  65.     -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution \
  66.     -XX:+PrintCommandLineFlags -XX:+PrintGCDetails -Xloggc:GC.log \
  67.     -jar server-myst-ebxl.jar nogui test144-final
  68.  
  69. exit 0
  70.  
  71. # -XX:ParallelCMSThreads=n
  72.  
  73. # Comments for that java line: ** WARNING -- BADLY OUT OF DATE **
  74. java \
  75.     -d32 -server \              # For up to 2.5 GB servers
  76.     -XX:+UseConcMarkSweepGC -Xincgc \   # define the garbage collector
  77.     -XX:ParallelGCThreads=4 \       # Parallel GC
  78.     -Xms300m -Xmx1g \           # Start the server with 300MB. Go up to 1 GB.
  79.     -XX:NewSize=300m \          # Use 300 MB for "new" (eden plus survivor spaces).
  80.                         # This means about 650 MB max for long-term.
  81.                         # Observed behavior is around 350mb long-term when the server is stable.
  82.  
  83. # Things to figure out:
  84. # How much memory to give to eden (for new and short lived objects) versus survivor
  85. # How many times an object "survives" before being promoted
  86. # Tune for the "normal" case of players moving over approximately a 3x3 to 5x5 chunk area
  87. # (Remember, the game loads r=9 chunks around you for normal (that's 17x17 chunks)
  88. # up to r=15 for far (31x31!!!!) for far. Yes, you can and probably will move to new areas
  89. # and flush it all, but that is rare. Tune for the common.
  90. # Keep in mind: 31x31 * 16x16 * 80 (average world height) * 4 bytes per location
  91. # is 75MiB! -- 16x16x4 = 1MiB, 31*31*80 is 76880
  92. # That's minimum long-term memory just for sitting in one chunk
  93. # Now consider that each time you change a chunk boundary, 16x16x4 x 31x80 -- one row of 31 new chunks
  94. # is loaded into short term space -- 2MB added to short term/removed from long term every time you move a little.
  95. #
  96. # Now consider that 4 bytes per location is probably a low estimate.
  97. # And, this doesn't take into account animals living in those chunks
  98. # Animals = longterm, hostile mobs = short term.
  99. # A large farm will raise this amount.
  100. #
  101. # Bottom line: Moving over 40x40 blocks in your base can be 4 chunks by 4 chunks
  102. # or approximately 16 rows of new data. That's about half of the long-term data for sitting still.
  103.  
  104.     -XX:+PrintGCHeapAtGC -XX:+PrintTenuringDistribution -XX:MaxTenuringThreshold=6 \
  105.     -XX:+PrintCommandLineFlags -XX:+PrintGCDetails -Xloggc:GC.log \ # Log and collect info
  106.     -XX:PermSize=65m -XX:MaxPermSize=95m \  # Classes, VM overhead, etc. Raise this if you add mods.
  107.     -jar server-myst-ebxl.jar nogui main    # The server file
  108.  
  109. ## java -Xms1250m -Xmx1250m -d32 -server -XX:+PrintGCHeapAtGC -XX:+PrintCommandLineFlags -XX:+PrintGCDetails -Xloggc:GC.log -XX:+PrintGCTimeStamps -jar server-myst-ebxl.jar nogui main
  110.  
  111. ## -XX:ParallelGCThreads=8 -XX:+TraceClassUnloading -XX:+UseParallelGC
  112. # -Xms1g -Xmx1g -XX:PermSize65m -XX:MaxPermSize65m -Xmn100m
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement