First version of QoS.

- QoS is handled by pqihandler, as a subclass of pqiqos
	- test program in libretroshare/src/tests/pqi/pqiqos_test.cc
	- RsItem now has an integer priority value

QoS is driven by two parameters:
	- max number of priority levels
	- average speed ratio between two successive levels

The current algorithm ensures that:
	- each item is treated within a constant time (which depends on its priority), whatever the order of feeding the queue
	- items of equal priority are treated in the same order
	- if kept unfed, the queue eventually gets empty.

For now the ratio is 2.8 for a total of 10 priorities. All items have default priority 5, except chat items that
have priority 7 for testing.

Todo
	- adapt the speed of drawing from thepriority queue to the available out rate of pqistreamer
	- remove data queue from pqistreamer
	- setup priority values for all services.



git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5_QoS@4511 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
csoler 2011-07-31 21:15:21 +00:00
parent 7a316eb8dd
commit 2832f912c6
15 changed files with 698 additions and 222 deletions

View file

@ -344,6 +344,7 @@ HEADERS += pqi/authssl.h \
pqi/p3dhtmgr.h \
pqi/p3notify.h \
pqi/p3upnpmgr.h \
pqi/pqiqos.h \
pqi/pqi.h \
pqi/pqi_base.h \
pqi/pqiarchive.h \
@ -467,6 +468,7 @@ SOURCES += pqi/authgpg.cc \
pqi/p3netmgr.cc \
pqi/p3dhtmgr.cc \
pqi/p3notify.cc \
pqi/pqiqos.cc \
pqi/pqiarchive.cc \
pqi/pqibin.cc \
pqi/pqihandler.cc \