dom0/qmemman: fork into background after daemon initialization (#635)
Parse config and setup socket before fork.
This commit is contained in:
parent
273032bfae
commit
c2d20e59d0
@ -30,7 +30,7 @@ start()
|
|||||||
xl sched-credit -d 0 -w 512
|
xl sched-credit -d 0 -w 512
|
||||||
cp /var/lib/qubes/qubes.xml /var/lib/qubes/backup/qubes-$(date +%F-%T).xml
|
cp /var/lib/qubes/qubes.xml /var/lib/qubes/backup/qubes-$(date +%F-%T).xml
|
||||||
|
|
||||||
/usr/lib/qubes/qmemman_daemon.py >/var/log/qubes/qmemman.log 2>/var/log/qubes/qmemman.errs &
|
/usr/lib/qubes/qmemman_daemon.py
|
||||||
MEM_CHANGE_THRESHOLD_KB=30000
|
MEM_CHANGE_THRESHOLD_KB=30000
|
||||||
MEMINFO_DELAY_USEC=100000
|
MEMINFO_DELAY_USEC=100000
|
||||||
/usr/lib/qubes/meminfo-writer $MEM_CHANGE_THRESHOLD_KB $MEMINFO_DELAY_USEC &
|
/usr/lib/qubes/meminfo-writer $MEM_CHANGE_THRESHOLD_KB $MEMINFO_DELAY_USEC &
|
||||||
|
@ -12,6 +12,8 @@ from optparse import OptionParser
|
|||||||
from qubesutils import parse_size
|
from qubesutils import parse_size
|
||||||
|
|
||||||
config_path = '/etc/qubes/qmemman.conf'
|
config_path = '/etc/qubes/qmemman.conf'
|
||||||
|
SOCK_PATH='/var/run/qubes/qmemman.sock'
|
||||||
|
LOG_PATH='/var/log/qubes/qmemman.log'
|
||||||
|
|
||||||
system_state = SystemState()
|
system_state = SystemState()
|
||||||
global_lock = thread.allocate_lock()
|
global_lock = thread.allocate_lock()
|
||||||
@ -105,15 +107,7 @@ class QMemmanReqHandler(SocketServer.BaseRequestHandler):
|
|||||||
self.request.send(resp)
|
self.request.send(resp)
|
||||||
|
|
||||||
|
|
||||||
def start_server():
|
def start_server(server):
|
||||||
SOCK_PATH='/var/run/qubes/qmemman.sock'
|
|
||||||
try:
|
|
||||||
os.unlink(SOCK_PATH)
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
os.umask(0)
|
|
||||||
server = SocketServer.UnixStreamServer(SOCK_PATH, QMemmanReqHandler)
|
|
||||||
os.umask(077)
|
|
||||||
server.serve_forever()
|
server.serve_forever()
|
||||||
|
|
||||||
class QMemmanServer:
|
class QMemmanServer:
|
||||||
@ -124,6 +118,19 @@ class QMemmanServer:
|
|||||||
parser.add_option("-c", "--config", action="store", dest="config", default=config_path)
|
parser.add_option("-c", "--config", action="store", dest="config", default=config_path)
|
||||||
(options, args) = parser.parse_args()
|
(options, args) = parser.parse_args()
|
||||||
|
|
||||||
|
logfd = os.open(LOG_PATH, os.O_WRONLY|os.O_APPEND|os.O_CREAT, 0644)
|
||||||
|
if logfd < 0:
|
||||||
|
print sys.stderr, "ERROR: Failed to open log file (%s)" % LOG_PATH
|
||||||
|
exit(1)
|
||||||
|
# reinitialize python stdout/err
|
||||||
|
sys.stdout.flush()
|
||||||
|
sys.stderr.flush()
|
||||||
|
os.dup2(logfd, 1)
|
||||||
|
os.dup2(logfd, 2)
|
||||||
|
os.close(logfd)
|
||||||
|
devnull = os.open('/dev/null', os.O_RDONLY)
|
||||||
|
os.dup2(devnull, 0)
|
||||||
|
|
||||||
config = SafeConfigParser({
|
config = SafeConfigParser({
|
||||||
'vm-min-mem': str(qmemman_algo.MIN_PREFMEM),
|
'vm-min-mem': str(qmemman_algo.MIN_PREFMEM),
|
||||||
'dom0-mem-boost': str(qmemman_algo.DOM0_MEM_BOOST),
|
'dom0-mem-boost': str(qmemman_algo.DOM0_MEM_BOOST),
|
||||||
@ -137,5 +144,13 @@ class QMemmanServer:
|
|||||||
|
|
||||||
print "values: %s, %s, %s" % (str(qmemman_algo.MIN_PREFMEM), str(qmemman_algo.DOM0_MEM_BOOST), str(qmemman_algo.CACHE_FACTOR))
|
print "values: %s, %s, %s" % (str(qmemman_algo.MIN_PREFMEM), str(qmemman_algo.DOM0_MEM_BOOST), str(qmemman_algo.CACHE_FACTOR))
|
||||||
|
|
||||||
thread.start_new_thread(start_server, tuple([]))
|
try:
|
||||||
|
os.unlink(SOCK_PATH)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
os.umask(0)
|
||||||
|
server = SocketServer.UnixStreamServer(SOCK_PATH, QMemmanReqHandler)
|
||||||
|
os.umask(077)
|
||||||
|
if os.fork() == 0:
|
||||||
|
thread.start_new_thread(start_server, tuple([server]))
|
||||||
XS_Watcher().watch_loop()
|
XS_Watcher().watch_loop()
|
||||||
|
Loading…
Reference in New Issue
Block a user