Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Move QUERY_FILETRANSFER handling to improve backend performance.

This significantly reduces the backend CPU usage for me when streaming a
recording or other file to the frontend.

Each time we send a command to the backend we perform a number of string
comparisons to find the correct handler. In the cases where that same command
is sent regularly, maybe several times a second those comparisons can stack up
to result in a high CPU load. This can be avoided by moving the most frequently
used commands to the top of the list thereby avoiding a couple of dozen or more
comparisons each time.

There may be other commands that should be moved to the top with similar
benefit.
(cherry picked from commit 529853d)
  • Loading branch information...
commit b655d8fa28a7ae3e17572db64bb7f213901c2085 1 parent eaab55b
@stuartm stuartm authored
Showing with 8 additions and 8 deletions.
  1. +8 −8 mythtv/programs/mythbackend/mainserver.cpp
View
16 mythtv/programs/mythbackend/mainserver.cpp
@@ -354,7 +354,14 @@ void MainServer::ProcessRequestWork(MythSocket *sock)
pbs->UpRef();
sockListLock.unlock();
- if (command == "QUERY_RECORDINGS")
+ if (command == "QUERY_FILETRANSFER")
+ {
+ if (tokens.size() != 2)
+ VERBOSE(VB_IMPORTANT, "Bad QUERY_FILETRANSFER");
+ else
+ HandleFileTransferQuery(listline, tokens, pbs);
+ }
+ else if (command == "QUERY_RECORDINGS")
{
if (tokens.size() != 2)
VERBOSE(VB_IMPORTANT, "Bad QUERY_RECORDINGS query");
@@ -546,13 +553,6 @@ void MainServer::ProcessRequestWork(MythSocket *sock)
{
HandleGetRecorderNum(listline, pbs);
}
- else if (command == "QUERY_FILETRANSFER")
- {
- if (tokens.size() != 2)
- VERBOSE(VB_IMPORTANT, "Bad QUERY_FILETRANSFER");
- else
- HandleFileTransferQuery(listline, tokens, pbs);
- }
else if (command == "QUERY_GENPIXMAP2")
{
HandleGenPreviewPixmap(listline, pbs);
Please sign in to comment.
Something went wrong with that request. Please try again.