|
Is there any option to solve tris issue? Is a confirmed bug?
Another issue i'm having is that virtual size of classic processes in Windows 2008 64 is around of 18 gb for 100 connections while is using 10.4 gb in superclassic. Do you need more info from me? This is the backup metadata without the need of my UDFCointec.dll. It only uses ib_udf. This way can be restored in any OS, i think.
backup with metadata only
To reproduce the problem, just write
update Pet_prueba set IDPETICION = IDPETICION where IDPETICION = 1 and prepare the statement. Re-opened based on comments and additional details received.
Application for open several connections and open the tables that makes Firebird uses a lot of memory for load metadata.
Document with steps
Metadata for database creation
My calcs is that 2.5.1 requires more than 37% more RAM, because i use 54000K as the base.
29% is if you calc that 2.1.4 requires less RAM than 2.5.1, but from my POV the calc must be done from 2.1.4. After rechecking I have to agree that I also see that 2.5.1 is using a bit (11%) more RAM than 2.1. This appears to be more or less normal - it has a number of addiitonal features compared with 2.1, that may consume memory. I just do not understand why such a difference (11% against 29%).
Hello Alex, i have used isql, ibexpert, my application, all with the same results.
Sean, to view the memory used to the process, i open task manager, see fb_inet_server process and in the processes tab see the column Memory( Private working set)->70528. I also have used processexplorer and in the process tree i see Private bytes 75320K and in Working Set 73856K. In the resource monitor i see in thrre different columns the three above values. As i have writed, In firebird 2.1 the same database uses around 50000 K. I attach the images Please try isql instead ibexpert.
Windows Task Manager has several memory counters, which ones are you looking at?
Are you comparing values before, during or after transaction commit? Hello Alex, in my test what i have done is connect To the database from ibexpert and execute one procedure that my client application runs after each connection. After that i go To Windows task manager and see the memory that each fb_inet_server consume and with that information i compute the difference.
I do not know If this procedure is valid, but this operations Are for do the calculation of the memory i need in one server for 200 concurrent users. Thanks Jesus, I've checked it with linux, which has 2 different kinds of consumed memory - virtual address space and allocated pages. First one really increased much due to more threads used by a task (each thread's stack do use a lot of virtual address space), but that's not too big trouble. What about really allocated pages on linux consumption of this kind of memory happened to be on your test even a bit (1-2%) smaller on 2.5.1 rather than on 2.1.4. Therefore first question is wheather windows has some similiar RAM accounting, and if yes - what kind of memory do you talk about? Telling true I do not believe in too much different memory usahge patterns depending upon OS.
I have been tested the new version, and the memory have been decreased from 84100 kb, to 73808 Kb, what means that fb 2.5.1 (currently testing also 2.5.2), uses 29% more than 2.1.4.
Is this a normal usage? I did not avoid additional memory usage in par.cpp & cmp.cpp, but due to better reusability of memory regions overall memory consumption decreased much.
Source code very simple.
library UDFCointec; uses SysUtils, Classes, UDFMath in 'UDFMath.pas'; exports UDF_power, UDF_sqrt; begin IsMultiThread := True; end. unit UDFMath; interface function UDF_power( var Base, Exponent: Double ): double; cdecl; export; function UDF_sqrt( var Value: double ): double; cdecl; export; implementation uses Math; function UDF_power(var Base, Exponent: Double): double; cdecl; begin try Result := power( Base, Exponent ); except Result := 0; end; end; function UDF_sqrt( var Value: double ): double; cdecl; begin try Result := sqrt( Value ); except Result := 0; end; end; initialization IsMultiThread := True; end. It will be also good idea to provide source code for your UDF (UDFCointec.dll)
I have sent you the password to tour email.
The archive is password protected.
The database file in fb 2.1
|
> Is a confirmed bug?
When I checked this last time, on linux I did not get serious difference in RAM usage between 2.1 and 2.5 (about 7%, as far as I remember). IMHO not critical, but certainly something might change.
>Another issue i'm having is that virtual size of classic processes in Windows 2008 64 is around of 18 gb for 100 connections while is using 10.4 gb in superclassic.
This is normal. The main reason to have superclassic is saving resources (compared with classic), including memory.
>Do you need more info from me?
No, but I need to finish with last plugin type, planned for FB3.