[Dev] Use Murphy as policy manager for Tizen Mobile

Saxena, Sunil sunil.saxena at intel.com
Tue Dec 3 19:26:16 GMT 2013


This is reminder request to provide input to Ismo for this feature.

Ismo, Please enter this feature request in JIRA for approval as an alternative feature for Tizen 3.0 Mobile.

-----Original Message-----
From: dev-bounces at lists.tizen.org [mailto:dev-bounces at lists.tizen.org] On Behalf Of Puustinen, Ismo
Sent: Friday, November 29, 2013 2:46 AM
To: dev at lists.tizen.org
Subject: [Dev] RFC: Use Murphy as policy manager for Tizen Mobile

Hello List,

Murphy is a resource policy manager used in Tizen IVI (see https://01.org/murphy for more information). I wish to propose providing Murphy as an alternative policy manager also in Tizen Mobile.
Disclaimer: I'm a Murphy developer.


What is resource policy management? The idea is that there are limited resources available in the system, such as the permission to play audio.
In systems that have limited user interaction capabilities (like IVI and
Mobile) the automatic handling of these resources is more important than in traditional desktop systems. For example, when a call is coming in, the ringtone player must get the audio playback permission even if there was a media player application playing music. The media player application must stop playing music, but in can continue playback when the call is ended.

In IVI the policies are more complex than in Mobile: there can be several simultaneous users and sessions, several entertainment units, driving safety regulations, and cross-domain policies. The car data must be taken in account when the policy decisions are made. For example, when the car starts to move, the resource constraints change, and some applications may lose the resources they already have.

At the moment there are two resource policy solutions in Tizen: Murphy and Samsung-developed Audio Session Manager (ASM) used in Mobile vertical. It makes little sense to have two policy managers in Tizen -- having only one would prevent fragmentation, make maintenance easier and provide a better story for developers and system integrator. I think that replacing ASM with Murphy in Mobile vertical in long term would be a good idea.


ASM consists of two parts: an application library (written in C) for requesting resources and a system daemon managing the resources. The communication between the library and daemon is done using System V message queues and files. Murphy has a resource backend and a number of different frontends for accessing it, including C library, D-Bus bindings, and support for ASM library. So in effect, Murphy can be used as a replacement for ASM without having to do any changes in the existing applications.

Murphy has several benefits compared to ASM:

1. Murphy is configurable. Murphy uses Lua as configuration and policy decision language. For performance-critical tasks the processing can be lifted to plugins written in C. ASM has all policies hard-coded in the binary itself. Configurability is important because it allows vendors to prototype quickly and cheaply and customize the way the device should behave without forking the policy manager component itself.

2. Murphy is a real open source project. Customers willing to improve Murphy can write patches and send them to Murphy mailing list. Murphy team also tries to keep documentation on the web pages up-to-date and comprehensive.

3. Murphy resource APIs are more modern. The System V message queues ASM uses don't provide file descriptors that the applications could add to select/poll function arguments. Instead the request-response messaging is done by blocking in the receive message call, meaning that the application must either prepare for a delay or use concurrency. Murphy APIs are asynchronous.

On the other hand, ASM is already used in Tizen Mobile and appears to work well enough.


I made a quick-and-rough performance comparison of the two policy managers running on the same phone platform. Murphy was using the ASM frontend to the resource library. Three test cases were performed:
simple resource request, resource request leading to preemption (another application losing the request) and a failed resource request. The times measured are from the arrival of the first ASM message to the response message being sent out.

Top bar of every measurement pair represents Murphy (*) and bottom bar represents ASM backend (=). Time is in milliseconds.

simple     *********************************  11.5
           =====================================  12.4

preemption ***************************************************  17.0
           ========================================  13.7

failed     *********************************  11.1
           =================  5.4

time (ms)  0              5             10             15             20

The results show that the policy managers have more or less similar performance. ASM clearly is faster in the test case where the resource request fails (resource is not granted to the caller). However, with some optimization, such as turning off logging, most likely both resource managers couĺd be made to perform better.


I propose adding Murphy as an "alternative" resource manager to the Tizen Mobile in 3.0 time frame. Any vendor wishing to experiment with Murphy would be free to do so by configuring the system to use Murphy instead of ASM. After Tizen 3.0, the maintainers of the Tizen Mobile media stack could consider replacing ASM with Murphy.

All comments and questions are welcome!

Ismo Puustinen <ismo.puustinen at intel.com> _______________________________________________
Dev mailing list
Dev at lists.tizen.org

More information about the Dev mailing list