Jump to content

Freeze on startup while data handling


photo

Recommended Posts

Hello

 

 

We're currently testing how much objects we can handle at once and how good the performance is.

We are loading our objects (Nodes, etc.) from a database backend (postgresql) with a custom c++-socket plugin (libboost, async socket).

 

Currently we can load 40'000 objects within 2-5 seconds into unigine. While the engine starts we load all objects with an very big xml string sent over the network.

Phrasing of the string is no problem and the object creation (logical objects, no game objects) is very quick.

 

But when all objects are created (we use different Unigine::Map objects) and the work is done, the engine freezes it self for about 1-3 minutes.

I have no idea what can cause this. There is nothing in the flush() or update() that can cause this.

 

What I know is, game time is freezing and update is not called (0 fps) in this time. After the freeze everything is running fast again.

This is no big problem at the moment (future tests show how the freeze is when we load 500k and 5000k objects), but I'm very interested what can cause this behavior.

 

Sadly I can't provide a sample for this (is a multiple server architecture) but maybe someone know what in the background of the engine happens?

The freeze is only after everything is loaded (this means after the big work). Maybe some sort of Memory Management that does something weird?

 

 

Greets

Manuel

Link to comment

Maybe UNIGINE script internal garbage collection for deleting no longer used scripting objects ? I think this kicks in every 30 frames or so

 

All objects are references to each other. It should not delete or cleanup anything, but it's possible.

 

You can catch this bad function in the visual studio debugger.

Or try to run engine_analyze console command after loading.

engine_analyze does not help really much. Display that the update() takes such long, but added log.error at the and and the beginning, at this time update was not called.

I using linux, so I tried to use gdb but I have no debugging symbols so I can not get much information.

 

#0  0x00007ffff707cd43 in ?? () from ../lib/libUnigine_x64d.so
#1  0x00007ffff707e207 in ?? () from ../lib/libUnigine_x64d.so
#2  0x00007ffff707e532 in ?? () from ../lib/libUnigine_x64d.so
#3  0x00007ffff707e5bd in ?? () from ../lib/libUnigine_x64d.so
#4  0x00007ffff7072d1a in ?? () from ../lib/libUnigine_x64d.so
#5  0x00007ffff7072d12 in ?? () from ../lib/libUnigine_x64d.so
#6  0x00007ffff7072d12 in ?? () from ../lib/libUnigine_x64d.so
#7  0x00007ffff7072d2b in ?? () from ../lib/libUnigine_x64d.so
#8  0x00007ffff7072d2b in ?? () from ../lib/libUnigine_x64d.so
#9  0x00007ffff7072d2b in ?? () from ../lib/libUnigine_x64d.so
#10 0x00007ffff7072d2b in ?? () from ../lib/libUnigine_x64d.so
#11 0x00007ffff7072d2b in ?? () from ../lib/libUnigine_x64d.so
#12 0x00007ffff7072d2b in ?? () from ../lib/libUnigine_x64d.so
#13 0x00007ffff7072d12 in ?? () from ../lib/libUnigine_x64d.so
#14 0x00007ffff7072d12 in ?? () from ../lib/libUnigine_x64d.so
#15 0x00007ffff7072d2b in ?? () from ../lib/libUnigine_x64d.so
#16 0x00007ffff7072d2b in ?? () from ../lib/libUnigine_x64d.so
#17 0x00007ffff7072d2b in ?? () from ../lib/libUnigine_x64d.so
#18 0x00007ffff7105d98 in ?? () from ../lib/libUnigine_x64d.so
#19 0x00007ffff71017ee in ?? () from ../lib/libUnigine_x64d.so
#20 0x00007ffff70c1e3c in ?? () from ../lib/libUnigine_x64d.so
#21 0x00007ffff710731a in ?? () from ../lib/libUnigine_x64d.so
#22 0x00007ffff715fb44 in ?? () from ../lib/libUnigine_x64d.so
#23 0x00007ffff716766c in ?? () from ../lib/libUnigine_x64d.so
#24 0x00007ffff716f121 in ?? () from ../lib/libUnigine_x64d.so
#25 0x00007ffff7167647 in ?? () from ../lib/libUnigine_x64d.so
#26 0x00007ffff70cb7fb in ?? () from ../lib/libUnigine_x64d.so
#27 0x00007ffff7059eb8 in ?? () from ../lib/libUnigine_x64d.so
#28 0x00007ffff7350e11 in ?? () from ../lib/libUnigine_x64d.so
#29 0x00007ffff704cd2d in ?? () from ../lib/libUnigine_x64d.so
#30 0x00007ffff717c025 in ?? () from ../lib/libUnigine_x64d.so
#31 0x00007ffff704bae8 in ?? () from ../lib/libUnigine_x64d.so
#32 0x0000000000400755 in ?? ()
#33 0x00007ffff6428ead in __libc_start_main () from /lib/x86_64-linux-gnu/libc.so.6
#34 0x0000000000400679 in ?? ()
#35 0x00007fffffffdc28 in ?? ()
#36 0x000000000000001c in ?? ()
#37 0x0000000000000017 in ?? ()
#38 0x00007fffffffe085 in ?? ()
#39 0x00007fffffffe0d2 in ?? ()
#40 0x00007fffffffe0dd in ?? ()
#41 0x00007fffffffe0e4 in ?? ()
#42 0x00007fffffffe0ef in ?? ()
#43 0x00007fffffffe0f4 in ?? ()

Link to comment

Please create small atomic example without your server side code. Creating of 40K objects in your manner for example. If the problem still occurs send this sample to us.

Link to comment
×
×
  • Create New...