SlideShare a Scribd company logo
1 of 35
Download to read offline
1
Existing Linux Kernel
support for big.LITTLE?
Using existing Kernel features to control task
placement in big.LITTLE MP systems running
Android
Chris Redpath, ARM
chris.redpath@arm.com
2
Why do this?
§ Discussed at Linaro Connect Q1.12
§  Scheduler Mini-Summit
§ We ought to be able to achieve some workable solution
§  We have cgroups, hotplug, sched_mc
§  We have control over CPU task placement
§ Decided to see how well we can do it!
3
What System?
§ No hardware around to play with, so modelling is only option
§  Restricts what we can learn: which approaches are likely to be worth
investigating on hardware
§ An ARM RTSM Versatile Express model with a fictional logic
tile
§  Has a Cortex A15 MP4 and a Cortex A7 MP4 CPU with coherent
interconnect fabric between the two clusters
§  Same model as used for Linaro in-kernel switcher development
§  Very similar board support and boot code
§  Thanks to Dave Martin & Nicolas Pitre
§ Linaro 12.04 Android release with some customisations
§ Linux Kernel 3.2.3+ with Android support from Vishal Bhoj
§  Integrated some support from Vincent Guittot’s kernel
§  sched_mc, Arch cpu_power & debugfs cpu_power controller
4
Not tested..
§ Hotplug
§  Not used at all here, but you’d probably need it if you wanted to
freeze the kernel today
§ Power savings
§  The model isn’t cycle accurate so we can’t even do rough estimates
§ Performance (ish)
§  The model doesn’t have any performance difference between big and
little cores, so need to be careful with these results
5
Hypotheses to test
1.  We can configure cgroups using cpusets to be helpful for
static task partitioning
§  Use a separate cgroup for each cluster
2.  Sched_mc can be used to concentrate tasks
§  Keeping short-lived tasks off the big CPUs naturally
3.  User-side tools can help out the scheduler by moving tasks
between groups
§  User side can make decisions based on what is happening
§  Android has a reasonably good mechanism already
6
Android cgroups
§ Android already uses cgroups for task classification and
cpuacct for task tracking
§  /dev/cpuctl/bg_non_interactive
§  Explicit background tasks (services etc.)
§  Low priority tasks (auto-background if thread priority low enough –
ANDROID_PRIORITY_BACKGROUND)
§  Maximum 10% CPU usage
§  Root group /dev/cpuctl/
§  All other tasks
§  Unconstrained CPU usage
§ Cgroup control implemented in thread priority setting code in
a C library
§  used by both Dalvik code and C runtime code
§  system/core/libcutils/sched_policy.c
7
Existing cgroup hierarchy
§ /dev/cpuctl/
§  Root group, load balancing turned on.
§  Has to have access to all CPUs
§  No changes to this group!
§ /dev/cpuctl/bg_non_interactive
§  Restrict CPU affinity to Core 0
§  Remove CPU% age restriction
§  Core 0 likely to be in use for IRQs anyway
§  One little core out of the dual cluster setup is rather like a 7.5%
restriction in practise and easier for me to think about J
8
New cgroups (1)
§ /dev/cpuctl/default
§  Restricted to CPU0-3 (little CPUs)
§  Anything which is not ‘SCHED_BATCH’ (background) sched_policy
goes in here
§  Load balancing enabled
§  Tasks report the same scheduler policy (SCHED_NORMAL) as those
in root group
§  restrict Android changes to one file
§  Use our taskmove program to move all tasks from /dev/cpuctl/tasks
to /dev/cpuctl/default/tasks early in boot
§  However some tasks don’t move
§  Others appearing later end up in the root group too
9
New cgroups (2)
§ /dev/cpuctl/fg_boost
§  Probably not Google’s fg_boost reincarnated (couldn’t find any code)
but I liked the name
§  Restricted to CPU4-7 (big CPUs)
§  Load Balancing enabled
§  Tasks in this group report the same scheduler policy as those in root
and default groups
§  Tasks with SCHED_NORMAL policy AND a priority higher than
ANDROID_PRIORITY_NORMAL (i.e. <0) are placed in this group
§  I call this ‘priority-based group migration’
§ Here we are aiming to give access to the fastest CPUs to the
most important (for responsiveness) tasks
10
Hypothesis 1
1.  We can configure cgroups using cpusets to be helpful for
static task partitioning
§  Use a separate cgroup for each cluster
11
Synthetic Test Suite
§ 4 Sysbench Compute
benchmark threads
§  Run 4 at once for 15s with a 10s
break and then 4 more for
another 15s
§ 8 CyclicTest threads
§  All 8 run for the entire 40s use
case
§ Collect Kernel Ftrace output for
each test case
§ Variable options, driven with
single test script - 18 variations
tested
Test	
  case cpu_power sched_mc cgroups
1 modified 2 affinity
2 modified 1 affinity
3 modified 0 affinity
4 default 2 affinity
5 default 1 affinity
6 default 0 affinity
7 modified 2 No	
  affinity
8 modified 1 No	
  affinity
9 modified 0 No	
  affinity
10 default 2 No	
  affinity
11 default 1 No	
  affinity
12 default 0 No	
  affinity
13 modified 2 Op=mised	
  
affinity
14 modified 1 Op=mised	
  
affinity
15 modified 0 Op=mised	
  
affinity
16 default 2 Op=mised	
  
affinity
17 default 1 Op=mised	
  
affinity
18 default 0 Op=mised	
  
affinity
12
Synthetic Test 12, no modifications
13
Synthetic Test cgroup Control
§ Place sysbench threads in ‘fg_boost’ group (big CPUs)
§ Place cyclictest threads in ‘default’ group (little CPUs)
14
Cgroup control - sysbench
15
Persistent kworker thread activity
§ Seen on all cores in all
tests
§ ondemand cpu governor
calls do_dbs_timer
§  this is the cause of most
calls
§  ~every 0.3s for each CPU
§ vm stat generation calls
vmstat_update
16
Cgroup control - cyclictest
17
Hypothesis 1 – TRUE
§ We can configure cgroups using cpusets to be helpful for
static task partitioning
§ The tasks in a group will balance nicely
§ Cgroups can be used for all situations where we know which
threads need to execute on which cluster
18
Hypothesis 2
§  Sched_mc can be used to concentrate tasks
§  Keeping short-lived tasks off the big CPUs naturally
§ Compare two cases:
§  Test case 10
§  Sched_mc_power_savings set to 2
§  Cpu_power set to 1024 for all cores
§  Cgroups have no affinity
§  Test Case 12
§  Sched_mc_power_savings set to 0
§  Cpu_power set to 1024 for all cores
§  Cgroups have no affinity
19
It does change spread of tasks
0%
10%
20%
30%
40%
50%
60%
70%
80%
90%
100%
CPU0CPU1CPU2CPU3CPU4CPU5CPU6CPU7
With sched_mc_powersaving
Idle%
Active%
§ With powersave
enabled:
§ Tasks are spread over
fewer cores
§ Without powersave
§ Tasks spread fairly
evenly amongst cores
§ However...
0%
20%
40%
60%
80%
100%
CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7
Without
sched_mc_powersaving
Idle%
Active%
20
It doesn’t change much overall
§ Average CPU usage actually
increases slightly in this case
§  Difference is generally within a
few percent either way
§  Can only achieve power
saving if we had been able to
enter a deeper sleep state on
the one core we vacated
§  Caveat: model performance &
no power management!
§  Although we vacated a big
core this time, that varies
§ Difference is not convincing
on model, needs evaluating
on HW
38.03% 37.84%
0.00%
10.00%
20.00%
30.00%
40.00%
50.00%
60.00%
70.00%
80.00%
90.00%
100.00%
overall usage %
Overall CPU Usage % for all 8
cores
sched_mc_powersave=2 sched_mc_powersave=0
21
Hypothesis 2 – partially TRUE
§ Sched_mc does concentrate tasks
§  Usefulness for power depends on hardware configuration
§ Sched_mc does not appear to be very useful as an automatic
‘little aggregator’
§  Might not be missing much but..
§  Combination of Sched_mc & asymmetric packing options does not
result in migration of tasks towards lower-numbered cores
§  No result in this slide set
22
Hypothesis 3
§ User-side tools can help out the scheduler by moving tasks
between groups
§ Test with Browser application
§ Using thread priorities as an indication of important tasks,
place threads in either big or little groups as appropriate
§  Hook into Android’s priority control
§ I call this..
23
Priority-Based Group Migration
§ Android documentation says that foreground applications
receive a priority boost so that they get more favourable CPU
allocations than other running applications
§ So use this boosted priority to move threads between
clusters!
§ Easiest option to do that:
§  Move threads into a different cgroup
§  Assign cpuset.cpus on the groups to separate the clusters, as we
described earlier
24
Priority-based Group Migration?
§ Which threads qualify in the browser? Only UI Threads
§  Priority boost only happens for threads involved in drawing or input
delivery – in our case mostly surfaceflinger and binder
§  Boost also only occurs for short periods of time – average 2.6ms,
minimum 530us, max 120ms
§  Average Migration Latency is 2.9ms, minimum 768us, max 240ms
0.00%
10.00%
20.00%
30.00%
40.00%
50.00%
60.00%
70.00%
80.00%
90.00%
100.00%
745
800
745
800
745
800
706
706
745
706
745
706
745
706
745
706
745
706
745
706
745
706
745
706
706
745
800
745
706
800
800
745
800
745
800
745
745
706
800
Useful work %age
Useful work %age
25
Browser Launch Conclusions
§ As it happens, the responsiveness boost delivered to
applications does not work the way I assumed..
§  I’d hoped that the application as a whole would get boosted but
instead individual functions are boosted
§  Due to the multi-process UI model in Android, this priority boost
ripples across a number of threads as the UI activity is processed
which multiplies latency
§  Priority boosts are in place for short periods of time (generally
milliseconds at a time) which means that we have to be careful about
latency
§ However we are able to move UI threads back and forth
between big and little clusters from the Android userspace
code with very minimal changes
26
Runtime Cluster Migration Issues
§ Since the priority boost is only in place for a short time, the
latency of this migration becomes very important
§  If priority was raised for all foreground application threads while the
app was in the foreground, latency would not be high enough to worry
about
§  Even with this latency, when loading and rendering the test page over
15s we spend a total of 36ms doing migration – but this is only for 60
migration events
§  If we are only hitting 60% useful time (i.e. migration is taking 40% of
the time spent) then we are unlikely to benefit from this approach
§  Migration needs to be below 25% of the time spent for this approach
to guarantee performance benefits
§  The numbers are likely to change a lot on hardware
27
Hyopthesis 3 – TRUE BUT!
§ Latency might be a problem, need to evaluate on hardware
§ On the plus side:
§  40% of this latency comes from changing the cgroup of the task which
could perhaps be improved in the kernel
§  We could make changes to ActivityManager to give better indications
about the threads owned by the foreground application
§  Also do not assume that the scheduler would have similar latencies if
it were making the decisions – no reason for that to be true – this
code path goes right through sysfs and cgroups before it gets
anywhere near scheduling
28
Try to Minimise Migration Latency
§ An idea I had:
§  When the system is not heavily loaded, we don’t need to use the big
cores – the little cores are still quite powerful in their own right.
§ To test this I hacked up a solution involving CPUFreq
§  Modify the sysfs code to allow /sys/devices/system/cpu/cpu0/cpufreq/
scaling_cur_freq to be polled
§  Write a dummy CPUFreq driver for my platform with 2 operating
points
§  Install the ondemand governor so that the cpu would ‘switch’ between
these two dummy operating points
§  Monitor current frequency of CPU0 in sysfs
§  On high frequency, set affinity of fg_boost group to big CPUs
§  On low frequency, set affinity of fg_boost group to little CPUs
§  Leave Android assigning threads to fg_boost when the priority is high
enough
29
Results pending
§ Initial investigation shows that ondemand governor keeps the
cpu frequency at the highest level for pretty much all the time
we are interested in
§ fg_boost group is consequently on big CPUs all the time
§ Some tweaking of thresholds might be necessary
§ I suspect latency of ondemand governor + userside-polling +
user-side cpuset affinity changes will be relatively large
§  Want to evaluate exactly what it does cost on real hardware
30
An alternative
§ Watch for specific applications starting and force their thread
affinity using cgroups
§ Looks possible but this is in the very early stages
§  Probably need a few more alterations in activity manager etc.
§  And remove my current ones J
§  Easy to identify PIDs belonging to specific Android apps from proc fs
and Android’s data directories
31
Recap
§ It’s easy to control the placement and balancing of threads
when you know which thread is which
§  You have to know your CPU layout to set up the cgroups
§ If you want to do it dynamically, Android already does a little
of it
§  Only ‘UI’ threads are currently picked out and identifiable
§  Need to make more invasive changes to increase to include more of
the ‘current application’ threads
§ Latency is relatively high, so might be an issue
§  Model is simulating 400MHz, so the 2.4ms average latency might be
closer to 0.9ms
§  May be ok especially if ‘boosted’ threads are boosted for longer
32
Q&A
§ Questions and comments gratefully received!
§ Next steps..
33
Next Steps 1
§ Evaluate priority-based cluster migration on hardware
§  Latency will be important
§  Most threads belonging to an application don’t reach sufficiently high
priority – but are they important enough from performance point of
view?
§ Evaluate real impact of cgroup change latency on hardware
§  Model only gives an indication that there is latency which needs to be
investigated
§  In the model, latency is split 40/60 between group change latency and
thread reschedule latency
34
Next Steps 2
§ Attempt to change Android’s runtime cgroup task
management so that the priority boosting applied to tasks is
not so short-lived
§  Make changes in ActivityManager to more clearly indicate which
application is in the foreground
§  Introduce a new scheduler policy to Android instead of hanging off
priorities. All threads belonging to ‘foreground’ application would have
‘fg_app’ scheduler policy independent of short-term priority boosting.
§  Threads would be placed in this policy when application comes to
front and removed when application is not on screen.
35
Next Steps 3
§ Try out ‘Semi-Dynamic high priority applications’
§  A user-side layer to manage specific applications
§ For a specific application want to designate as important:
§  Identify app UID from /data/data/<app name>
§  com.android.browser is app_11 on Linaro Android
§  Monitor /proc folder periodically to look for processed owned by the
right UID
§  When we find it..
§  List contents of /proc/<pid>/tasks
§  Place threads in ‘big’ group
§ Would need to modify the priority-based group assignment so
it didn’t clash

More Related Content

What's hot

Netflix SRE perf meetup_slides
Netflix SRE perf meetup_slidesNetflix SRE perf meetup_slides
Netflix SRE perf meetup_slidesEd Hunter
 
Scaling Jakarta EE Applications Vertically and Horizontally with Jelastic PaaS
Scaling Jakarta EE Applications Vertically and Horizontally with Jelastic PaaSScaling Jakarta EE Applications Vertically and Horizontally with Jelastic PaaS
Scaling Jakarta EE Applications Vertically and Horizontally with Jelastic PaaSJelastic Multi-Cloud PaaS
 
High performance computing - building blocks, production & perspective
High performance computing - building blocks, production & perspectiveHigh performance computing - building blocks, production & perspective
High performance computing - building blocks, production & perspectiveJason Shih
 
Protecting Real-Time GPU Kernels in Integrated CPU-GPU SoC Platforms
Protecting Real-Time GPU Kernels in Integrated CPU-GPU SoC PlatformsProtecting Real-Time GPU Kernels in Integrated CPU-GPU SoC Platforms
Protecting Real-Time GPU Kernels in Integrated CPU-GPU SoC PlatformsHeechul Yun
 
High performance computing tutorial, with checklist and tips to optimize clus...
High performance computing tutorial, with checklist and tips to optimize clus...High performance computing tutorial, with checklist and tips to optimize clus...
High performance computing tutorial, with checklist and tips to optimize clus...Pradeep Redddy Raamana
 
MEW22 22nd Machine Evaluation Workshop Microsoft
MEW22 22nd Machine Evaluation Workshop MicrosoftMEW22 22nd Machine Evaluation Workshop Microsoft
MEW22 22nd Machine Evaluation Workshop MicrosoftLee Stott
 
How to Run TensorFlow Cheaper in the Cloud Using Elastic GPUs
How to Run TensorFlow Cheaper in the Cloud Using Elastic GPUsHow to Run TensorFlow Cheaper in the Cloud Using Elastic GPUs
How to Run TensorFlow Cheaper in the Cloud Using Elastic GPUsAltoros
 
High Performance Computing: an Introduction for the Society of Actuaries
High Performance Computing: an Introduction for the Society of ActuariesHigh Performance Computing: an Introduction for the Society of Actuaries
High Performance Computing: an Introduction for the Society of ActuariesAdam DeConinck
 
Microsoft Azure in HPC scenarios
Microsoft Azure in HPC scenariosMicrosoft Azure in HPC scenarios
Microsoft Azure in HPC scenariosmictc
 
Advanced Cluster Settings
Advanced Cluster Settings Advanced Cluster Settings
Advanced Cluster Settings Rundeck
 
Slides for In-Datacenter Performance Analysis of a Tensor Processing Unit
Slides for In-Datacenter Performance Analysis of a Tensor Processing UnitSlides for In-Datacenter Performance Analysis of a Tensor Processing Unit
Slides for In-Datacenter Performance Analysis of a Tensor Processing UnitCarlo C. del Mundo
 
The Fifth Elephant 2016: Self-Serve Performance Tuning for Hadoop and Spark
The Fifth Elephant 2016: Self-Serve Performance Tuning for Hadoop and SparkThe Fifth Elephant 2016: Self-Serve Performance Tuning for Hadoop and Spark
The Fifth Elephant 2016: Self-Serve Performance Tuning for Hadoop and SparkAkshay Rai
 
20180926 kubeflow-meetup-1-kubeflow-operators-Preferred Networks-Shingo Omura
20180926 kubeflow-meetup-1-kubeflow-operators-Preferred Networks-Shingo Omura20180926 kubeflow-meetup-1-kubeflow-operators-Preferred Networks-Shingo Omura
20180926 kubeflow-meetup-1-kubeflow-operators-Preferred Networks-Shingo OmuraPreferred Networks
 
IRJET- Performance Comparison of Real-Time Garbage Collection in the Sun ...
IRJET-  	  Performance Comparison of Real-Time Garbage Collection in the Sun ...IRJET-  	  Performance Comparison of Real-Time Garbage Collection in the Sun ...
IRJET- Performance Comparison of Real-Time Garbage Collection in the Sun ...IRJET Journal
 
ACM Applicative System Methodology 2016
ACM Applicative System Methodology 2016ACM Applicative System Methodology 2016
ACM Applicative System Methodology 2016Brendan Gregg
 
HybridAzureCloud
HybridAzureCloudHybridAzureCloud
HybridAzureCloudChris Condo
 
XeMPUPiL: Towards Performance-aware Power Capping Orchestrator for the Xen Hy...
XeMPUPiL: Towards Performance-aware Power Capping Orchestrator for the Xen Hy...XeMPUPiL: Towards Performance-aware Power Capping Orchestrator for the Xen Hy...
XeMPUPiL: Towards Performance-aware Power Capping Orchestrator for the Xen Hy...NECST Lab @ Politecnico di Milano
 
November 2014 HUG: Lessons from Hadoop 2+Java8 migration at LinkedIn
November 2014 HUG: Lessons from Hadoop 2+Java8 migration at LinkedIn November 2014 HUG: Lessons from Hadoop 2+Java8 migration at LinkedIn
November 2014 HUG: Lessons from Hadoop 2+Java8 migration at LinkedIn Yahoo Developer Network
 
Musings on Mesos: Docker, Kubernetes, and Beyond.
Musings on Mesos: Docker, Kubernetes, and Beyond.Musings on Mesos: Docker, Kubernetes, and Beyond.
Musings on Mesos: Docker, Kubernetes, and Beyond.Timothy St. Clair
 

What's hot (20)

Netflix SRE perf meetup_slides
Netflix SRE perf meetup_slidesNetflix SRE perf meetup_slides
Netflix SRE perf meetup_slides
 
Scaling Jakarta EE Applications Vertically and Horizontally with Jelastic PaaS
Scaling Jakarta EE Applications Vertically and Horizontally with Jelastic PaaSScaling Jakarta EE Applications Vertically and Horizontally with Jelastic PaaS
Scaling Jakarta EE Applications Vertically and Horizontally with Jelastic PaaS
 
High performance computing - building blocks, production & perspective
High performance computing - building blocks, production & perspectiveHigh performance computing - building blocks, production & perspective
High performance computing - building blocks, production & perspective
 
Protecting Real-Time GPU Kernels in Integrated CPU-GPU SoC Platforms
Protecting Real-Time GPU Kernels in Integrated CPU-GPU SoC PlatformsProtecting Real-Time GPU Kernels in Integrated CPU-GPU SoC Platforms
Protecting Real-Time GPU Kernels in Integrated CPU-GPU SoC Platforms
 
High performance computing tutorial, with checklist and tips to optimize clus...
High performance computing tutorial, with checklist and tips to optimize clus...High performance computing tutorial, with checklist and tips to optimize clus...
High performance computing tutorial, with checklist and tips to optimize clus...
 
MEW22 22nd Machine Evaluation Workshop Microsoft
MEW22 22nd Machine Evaluation Workshop MicrosoftMEW22 22nd Machine Evaluation Workshop Microsoft
MEW22 22nd Machine Evaluation Workshop Microsoft
 
PROSE
PROSEPROSE
PROSE
 
How to Run TensorFlow Cheaper in the Cloud Using Elastic GPUs
How to Run TensorFlow Cheaper in the Cloud Using Elastic GPUsHow to Run TensorFlow Cheaper in the Cloud Using Elastic GPUs
How to Run TensorFlow Cheaper in the Cloud Using Elastic GPUs
 
High Performance Computing: an Introduction for the Society of Actuaries
High Performance Computing: an Introduction for the Society of ActuariesHigh Performance Computing: an Introduction for the Society of Actuaries
High Performance Computing: an Introduction for the Society of Actuaries
 
Microsoft Azure in HPC scenarios
Microsoft Azure in HPC scenariosMicrosoft Azure in HPC scenarios
Microsoft Azure in HPC scenarios
 
Advanced Cluster Settings
Advanced Cluster Settings Advanced Cluster Settings
Advanced Cluster Settings
 
Slides for In-Datacenter Performance Analysis of a Tensor Processing Unit
Slides for In-Datacenter Performance Analysis of a Tensor Processing UnitSlides for In-Datacenter Performance Analysis of a Tensor Processing Unit
Slides for In-Datacenter Performance Analysis of a Tensor Processing Unit
 
The Fifth Elephant 2016: Self-Serve Performance Tuning for Hadoop and Spark
The Fifth Elephant 2016: Self-Serve Performance Tuning for Hadoop and SparkThe Fifth Elephant 2016: Self-Serve Performance Tuning for Hadoop and Spark
The Fifth Elephant 2016: Self-Serve Performance Tuning for Hadoop and Spark
 
20180926 kubeflow-meetup-1-kubeflow-operators-Preferred Networks-Shingo Omura
20180926 kubeflow-meetup-1-kubeflow-operators-Preferred Networks-Shingo Omura20180926 kubeflow-meetup-1-kubeflow-operators-Preferred Networks-Shingo Omura
20180926 kubeflow-meetup-1-kubeflow-operators-Preferred Networks-Shingo Omura
 
IRJET- Performance Comparison of Real-Time Garbage Collection in the Sun ...
IRJET-  	  Performance Comparison of Real-Time Garbage Collection in the Sun ...IRJET-  	  Performance Comparison of Real-Time Garbage Collection in the Sun ...
IRJET- Performance Comparison of Real-Time Garbage Collection in the Sun ...
 
ACM Applicative System Methodology 2016
ACM Applicative System Methodology 2016ACM Applicative System Methodology 2016
ACM Applicative System Methodology 2016
 
HybridAzureCloud
HybridAzureCloudHybridAzureCloud
HybridAzureCloud
 
XeMPUPiL: Towards Performance-aware Power Capping Orchestrator for the Xen Hy...
XeMPUPiL: Towards Performance-aware Power Capping Orchestrator for the Xen Hy...XeMPUPiL: Towards Performance-aware Power Capping Orchestrator for the Xen Hy...
XeMPUPiL: Towards Performance-aware Power Capping Orchestrator for the Xen Hy...
 
November 2014 HUG: Lessons from Hadoop 2+Java8 migration at LinkedIn
November 2014 HUG: Lessons from Hadoop 2+Java8 migration at LinkedIn November 2014 HUG: Lessons from Hadoop 2+Java8 migration at LinkedIn
November 2014 HUG: Lessons from Hadoop 2+Java8 migration at LinkedIn
 
Musings on Mesos: Docker, Kubernetes, and Beyond.
Musings on Mesos: Docker, Kubernetes, and Beyond.Musings on Mesos: Docker, Kubernetes, and Beyond.
Musings on Mesos: Docker, Kubernetes, and Beyond.
 

Viewers also liked

LAS16-400: Mini Conference 3 AOSP (Session 1)
LAS16-400: Mini Conference 3 AOSP (Session 1)LAS16-400: Mini Conference 3 AOSP (Session 1)
LAS16-400: Mini Conference 3 AOSP (Session 1)Linaro
 
Linux Preempt-RT Internals
Linux Preempt-RT InternalsLinux Preempt-RT Internals
Linux Preempt-RT Internals哲豪 康哲豪
 
Las16 309 - lua jit arm64 port - status
Las16 309 - lua jit arm64 port - statusLas16 309 - lua jit arm64 port - status
Las16 309 - lua jit arm64 port - statusLinaro
 
LAS16-200: SCMI - System Management and Control Interface
LAS16-200:  SCMI - System Management and Control InterfaceLAS16-200:  SCMI - System Management and Control Interface
LAS16-200: SCMI - System Management and Control InterfaceLinaro
 
Q4.11: Sched_mc on dual / quad cores
Q4.11: Sched_mc on dual / quad coresQ4.11: Sched_mc on dual / quad cores
Q4.11: Sched_mc on dual / quad coresLinaro
 
BUD17-TR02: Upstreaming 101
BUD17-TR02: Upstreaming 101 BUD17-TR02: Upstreaming 101
BUD17-TR02: Upstreaming 101 Linaro
 
LAS16-400K2: TianoCore – Open Source UEFI Community Update
LAS16-400K2: TianoCore – Open Source UEFI Community UpdateLAS16-400K2: TianoCore – Open Source UEFI Community Update
LAS16-400K2: TianoCore – Open Source UEFI Community UpdateLinaro
 
BUD17-400: Secure Data Path with OPTEE
BUD17-400: Secure Data Path with OPTEE BUD17-400: Secure Data Path with OPTEE
BUD17-400: Secure Data Path with OPTEE Linaro
 
BUD17-214: Bus scaling QoS update
BUD17-214: Bus scaling QoS update BUD17-214: Bus scaling QoS update
BUD17-214: Bus scaling QoS update Linaro
 
BUD17-405: Building a reference IoT product with Zephyr
BUD17-405: Building a reference IoT product with Zephyr BUD17-405: Building a reference IoT product with Zephyr
BUD17-405: Building a reference IoT product with Zephyr Linaro
 

Viewers also liked (10)

LAS16-400: Mini Conference 3 AOSP (Session 1)
LAS16-400: Mini Conference 3 AOSP (Session 1)LAS16-400: Mini Conference 3 AOSP (Session 1)
LAS16-400: Mini Conference 3 AOSP (Session 1)
 
Linux Preempt-RT Internals
Linux Preempt-RT InternalsLinux Preempt-RT Internals
Linux Preempt-RT Internals
 
Las16 309 - lua jit arm64 port - status
Las16 309 - lua jit arm64 port - statusLas16 309 - lua jit arm64 port - status
Las16 309 - lua jit arm64 port - status
 
LAS16-200: SCMI - System Management and Control Interface
LAS16-200:  SCMI - System Management and Control InterfaceLAS16-200:  SCMI - System Management and Control Interface
LAS16-200: SCMI - System Management and Control Interface
 
Q4.11: Sched_mc on dual / quad cores
Q4.11: Sched_mc on dual / quad coresQ4.11: Sched_mc on dual / quad cores
Q4.11: Sched_mc on dual / quad cores
 
BUD17-TR02: Upstreaming 101
BUD17-TR02: Upstreaming 101 BUD17-TR02: Upstreaming 101
BUD17-TR02: Upstreaming 101
 
LAS16-400K2: TianoCore – Open Source UEFI Community Update
LAS16-400K2: TianoCore – Open Source UEFI Community UpdateLAS16-400K2: TianoCore – Open Source UEFI Community Update
LAS16-400K2: TianoCore – Open Source UEFI Community Update
 
BUD17-400: Secure Data Path with OPTEE
BUD17-400: Secure Data Path with OPTEE BUD17-400: Secure Data Path with OPTEE
BUD17-400: Secure Data Path with OPTEE
 
BUD17-214: Bus scaling QoS update
BUD17-214: Bus scaling QoS update BUD17-214: Bus scaling QoS update
BUD17-214: Bus scaling QoS update
 
BUD17-405: Building a reference IoT product with Zephyr
BUD17-405: Building a reference IoT product with Zephyr BUD17-405: Building a reference IoT product with Zephyr
BUD17-405: Building a reference IoT product with Zephyr
 

Similar to Existing Linux Kernel support for big.LITTLE? Using existing features

Deep Dive on Amazon EC2 Instances (March 2017)
Deep Dive on Amazon EC2 Instances (March 2017)Deep Dive on Amazon EC2 Instances (March 2017)
Deep Dive on Amazon EC2 Instances (March 2017)Julien SIMON
 
Ceph Day Beijing - Ceph all-flash array design based on NUMA architecture
Ceph Day Beijing - Ceph all-flash array design based on NUMA architectureCeph Day Beijing - Ceph all-flash array design based on NUMA architecture
Ceph Day Beijing - Ceph all-flash array design based on NUMA architectureCeph Community
 
Ceph Day Beijing - Ceph All-Flash Array Design Based on NUMA Architecture
Ceph Day Beijing - Ceph All-Flash Array Design Based on NUMA ArchitectureCeph Day Beijing - Ceph All-Flash Array Design Based on NUMA Architecture
Ceph Day Beijing - Ceph All-Flash Array Design Based on NUMA ArchitectureDanielle Womboldt
 
Deep Dive on Amazon EC2 instances
Deep Dive on Amazon EC2 instancesDeep Dive on Amazon EC2 instances
Deep Dive on Amazon EC2 instancesAmazon Web Services
 
Optimizing elastic search on google compute engine
Optimizing elastic search on google compute engineOptimizing elastic search on google compute engine
Optimizing elastic search on google compute engineBhuvaneshwaran R
 
Running ElasticSearch on Google Compute Engine in Production
Running ElasticSearch on Google Compute Engine in ProductionRunning ElasticSearch on Google Compute Engine in Production
Running ElasticSearch on Google Compute Engine in ProductionSearce Inc
 
SRV402 Deep Dive on Amazon EC2 Instances, Featuring Performance Optimization ...
SRV402 Deep Dive on Amazon EC2 Instances, Featuring Performance Optimization ...SRV402 Deep Dive on Amazon EC2 Instances, Featuring Performance Optimization ...
SRV402 Deep Dive on Amazon EC2 Instances, Featuring Performance Optimization ...Amazon Web Services
 
SRV402 Deep Dive on Amazon EC2 Instances, Featuring Performance Optimization ...
SRV402 Deep Dive on Amazon EC2 Instances, Featuring Performance Optimization ...SRV402 Deep Dive on Amazon EC2 Instances, Featuring Performance Optimization ...
SRV402 Deep Dive on Amazon EC2 Instances, Featuring Performance Optimization ...Amazon Web Services
 
SRV402 Deep Dive on Amazon EC2 Instances, Featuring Performance Optimization ...
SRV402 Deep Dive on Amazon EC2 Instances, Featuring Performance Optimization ...SRV402 Deep Dive on Amazon EC2 Instances, Featuring Performance Optimization ...
SRV402 Deep Dive on Amazon EC2 Instances, Featuring Performance Optimization ...Amazon Web Services
 
Cassandra in Operation
Cassandra in OperationCassandra in Operation
Cassandra in Operationniallmilton
 
AWS re:Invent 2016: Deep Dive on Amazon EC2 Instances, Featuring Performance ...
AWS re:Invent 2016: Deep Dive on Amazon EC2 Instances, Featuring Performance ...AWS re:Invent 2016: Deep Dive on Amazon EC2 Instances, Featuring Performance ...
AWS re:Invent 2016: Deep Dive on Amazon EC2 Instances, Featuring Performance ...Amazon Web Services
 
Advanced Namespaces and cgroups
Advanced Namespaces and cgroupsAdvanced Namespaces and cgroups
Advanced Namespaces and cgroupsKernel TLV
 
AWS re:Invent 2016: [JK REPEAT] Deep Dive on Amazon EC2 Instances, Featuring ...
AWS re:Invent 2016: [JK REPEAT] Deep Dive on Amazon EC2 Instances, Featuring ...AWS re:Invent 2016: [JK REPEAT] Deep Dive on Amazon EC2 Instances, Featuring ...
AWS re:Invent 2016: [JK REPEAT] Deep Dive on Amazon EC2 Instances, Featuring ...Amazon Web Services
 
Kubernetes at Datadog the very hard way
Kubernetes at Datadog the very hard wayKubernetes at Datadog the very hard way
Kubernetes at Datadog the very hard wayLaurent Bernaille
 
Memory Bandwidth QoS
Memory Bandwidth QoSMemory Bandwidth QoS
Memory Bandwidth QoSRohit Jnagal
 
Deep Dive on Amazon EC2 Instances - AWS Summit Cape Town 2017
Deep Dive on Amazon EC2 Instances - AWS Summit Cape Town 2017Deep Dive on Amazon EC2 Instances - AWS Summit Cape Town 2017
Deep Dive on Amazon EC2 Instances - AWS Summit Cape Town 2017Amazon Web Services
 

Similar to Existing Linux Kernel support for big.LITTLE? Using existing features (20)

Deep Dive on Amazon EC2 Instances (March 2017)
Deep Dive on Amazon EC2 Instances (March 2017)Deep Dive on Amazon EC2 Instances (March 2017)
Deep Dive on Amazon EC2 Instances (March 2017)
 
Ceph Day Beijing - Ceph all-flash array design based on NUMA architecture
Ceph Day Beijing - Ceph all-flash array design based on NUMA architectureCeph Day Beijing - Ceph all-flash array design based on NUMA architecture
Ceph Day Beijing - Ceph all-flash array design based on NUMA architecture
 
Ceph Day Beijing - Ceph All-Flash Array Design Based on NUMA Architecture
Ceph Day Beijing - Ceph All-Flash Array Design Based on NUMA ArchitectureCeph Day Beijing - Ceph All-Flash Array Design Based on NUMA Architecture
Ceph Day Beijing - Ceph All-Flash Array Design Based on NUMA Architecture
 
Deep Dive on Amazon EC2 instances
Deep Dive on Amazon EC2 instancesDeep Dive on Amazon EC2 instances
Deep Dive on Amazon EC2 instances
 
Optimizing elastic search on google compute engine
Optimizing elastic search on google compute engineOptimizing elastic search on google compute engine
Optimizing elastic search on google compute engine
 
Running ElasticSearch on Google Compute Engine in Production
Running ElasticSearch on Google Compute Engine in ProductionRunning ElasticSearch on Google Compute Engine in Production
Running ElasticSearch on Google Compute Engine in Production
 
SRV402 Deep Dive on Amazon EC2 Instances, Featuring Performance Optimization ...
SRV402 Deep Dive on Amazon EC2 Instances, Featuring Performance Optimization ...SRV402 Deep Dive on Amazon EC2 Instances, Featuring Performance Optimization ...
SRV402 Deep Dive on Amazon EC2 Instances, Featuring Performance Optimization ...
 
SRV402 Deep Dive on Amazon EC2 Instances, Featuring Performance Optimization ...
SRV402 Deep Dive on Amazon EC2 Instances, Featuring Performance Optimization ...SRV402 Deep Dive on Amazon EC2 Instances, Featuring Performance Optimization ...
SRV402 Deep Dive on Amazon EC2 Instances, Featuring Performance Optimization ...
 
Hadoop administration
Hadoop administrationHadoop administration
Hadoop administration
 
SRV402 Deep Dive on Amazon EC2 Instances, Featuring Performance Optimization ...
SRV402 Deep Dive on Amazon EC2 Instances, Featuring Performance Optimization ...SRV402 Deep Dive on Amazon EC2 Instances, Featuring Performance Optimization ...
SRV402 Deep Dive on Amazon EC2 Instances, Featuring Performance Optimization ...
 
Deep Dive on Amazon EC2
Deep Dive on Amazon EC2Deep Dive on Amazon EC2
Deep Dive on Amazon EC2
 
Cassandra in Operation
Cassandra in OperationCassandra in Operation
Cassandra in Operation
 
Linux Huge Pages
Linux Huge PagesLinux Huge Pages
Linux Huge Pages
 
AWS re:Invent 2016: Deep Dive on Amazon EC2 Instances, Featuring Performance ...
AWS re:Invent 2016: Deep Dive on Amazon EC2 Instances, Featuring Performance ...AWS re:Invent 2016: Deep Dive on Amazon EC2 Instances, Featuring Performance ...
AWS re:Invent 2016: Deep Dive on Amazon EC2 Instances, Featuring Performance ...
 
Advanced Namespaces and cgroups
Advanced Namespaces and cgroupsAdvanced Namespaces and cgroups
Advanced Namespaces and cgroups
 
AWS re:Invent 2016: [JK REPEAT] Deep Dive on Amazon EC2 Instances, Featuring ...
AWS re:Invent 2016: [JK REPEAT] Deep Dive on Amazon EC2 Instances, Featuring ...AWS re:Invent 2016: [JK REPEAT] Deep Dive on Amazon EC2 Instances, Featuring ...
AWS re:Invent 2016: [JK REPEAT] Deep Dive on Amazon EC2 Instances, Featuring ...
 
Kubernetes at Datadog the very hard way
Kubernetes at Datadog the very hard wayKubernetes at Datadog the very hard way
Kubernetes at Datadog the very hard way
 
Memory Bandwidth QoS
Memory Bandwidth QoSMemory Bandwidth QoS
Memory Bandwidth QoS
 
Deep Dive on Amazon EC2 Instances - AWS Summit Cape Town 2017
Deep Dive on Amazon EC2 Instances - AWS Summit Cape Town 2017Deep Dive on Amazon EC2 Instances - AWS Summit Cape Town 2017
Deep Dive on Amazon EC2 Instances - AWS Summit Cape Town 2017
 
Deep Dive on Amazon EC2
Deep Dive on Amazon EC2Deep Dive on Amazon EC2
Deep Dive on Amazon EC2
 

More from Linaro

Deep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea GalloDeep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea GalloLinaro
 
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta VekariaArm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta VekariaLinaro
 
Huawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
Huawei’s requirements for the ARM based HPC solution readiness - Joshua MoraHuawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
Huawei’s requirements for the ARM based HPC solution readiness - Joshua MoraLinaro
 
Bud17 113: distribution ci using qemu and open qa
Bud17 113: distribution ci using qemu and open qaBud17 113: distribution ci using qemu and open qa
Bud17 113: distribution ci using qemu and open qaLinaro
 
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018Linaro
 
HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018Linaro
 
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...Linaro
 
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...Linaro
 
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...Linaro
 
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...Linaro
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineLinaro
 
HKG18-100K1 - George Grey: Opening Keynote
HKG18-100K1 - George Grey: Opening KeynoteHKG18-100K1 - George Grey: Opening Keynote
HKG18-100K1 - George Grey: Opening KeynoteLinaro
 
HKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP WorkshopHKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP WorkshopLinaro
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineLinaro
 
HKG18-315 - Why the ecosystem is a wonderful thing, warts and all
HKG18-315 - Why the ecosystem is a wonderful thing, warts and allHKG18-315 - Why the ecosystem is a wonderful thing, warts and all
HKG18-315 - Why the ecosystem is a wonderful thing, warts and allLinaro
 
HKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse HypervisorHKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse HypervisorLinaro
 
HKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMUHKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMULinaro
 
HKG18-113- Secure Data Path work with i.MX8M
HKG18-113- Secure Data Path work with i.MX8MHKG18-113- Secure Data Path work with i.MX8M
HKG18-113- Secure Data Path work with i.MX8MLinaro
 
HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation Linaro
 
HKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted bootHKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted bootLinaro
 

More from Linaro (20)

Deep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea GalloDeep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea Gallo
 
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta VekariaArm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
 
Huawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
Huawei’s requirements for the ARM based HPC solution readiness - Joshua MoraHuawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
Huawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
 
Bud17 113: distribution ci using qemu and open qa
Bud17 113: distribution ci using qemu and open qaBud17 113: distribution ci using qemu and open qa
Bud17 113: distribution ci using qemu and open qa
 
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
 
HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018
 
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
 
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
 
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
 
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
 
HKG18-100K1 - George Grey: Opening Keynote
HKG18-100K1 - George Grey: Opening KeynoteHKG18-100K1 - George Grey: Opening Keynote
HKG18-100K1 - George Grey: Opening Keynote
 
HKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP WorkshopHKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP Workshop
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
 
HKG18-315 - Why the ecosystem is a wonderful thing, warts and all
HKG18-315 - Why the ecosystem is a wonderful thing, warts and allHKG18-315 - Why the ecosystem is a wonderful thing, warts and all
HKG18-315 - Why the ecosystem is a wonderful thing, warts and all
 
HKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse HypervisorHKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
 
HKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMUHKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMU
 
HKG18-113- Secure Data Path work with i.MX8M
HKG18-113- Secure Data Path work with i.MX8MHKG18-113- Secure Data Path work with i.MX8M
HKG18-113- Secure Data Path work with i.MX8M
 
HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation
 
HKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted bootHKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted boot
 

Recently uploaded

SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 

Recently uploaded (20)

SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 

Existing Linux Kernel support for big.LITTLE? Using existing features

  • 1. 1 Existing Linux Kernel support for big.LITTLE? Using existing Kernel features to control task placement in big.LITTLE MP systems running Android Chris Redpath, ARM chris.redpath@arm.com
  • 2. 2 Why do this? § Discussed at Linaro Connect Q1.12 §  Scheduler Mini-Summit § We ought to be able to achieve some workable solution §  We have cgroups, hotplug, sched_mc §  We have control over CPU task placement § Decided to see how well we can do it!
  • 3. 3 What System? § No hardware around to play with, so modelling is only option §  Restricts what we can learn: which approaches are likely to be worth investigating on hardware § An ARM RTSM Versatile Express model with a fictional logic tile §  Has a Cortex A15 MP4 and a Cortex A7 MP4 CPU with coherent interconnect fabric between the two clusters §  Same model as used for Linaro in-kernel switcher development §  Very similar board support and boot code §  Thanks to Dave Martin & Nicolas Pitre § Linaro 12.04 Android release with some customisations § Linux Kernel 3.2.3+ with Android support from Vishal Bhoj §  Integrated some support from Vincent Guittot’s kernel §  sched_mc, Arch cpu_power & debugfs cpu_power controller
  • 4. 4 Not tested.. § Hotplug §  Not used at all here, but you’d probably need it if you wanted to freeze the kernel today § Power savings §  The model isn’t cycle accurate so we can’t even do rough estimates § Performance (ish) §  The model doesn’t have any performance difference between big and little cores, so need to be careful with these results
  • 5. 5 Hypotheses to test 1.  We can configure cgroups using cpusets to be helpful for static task partitioning §  Use a separate cgroup for each cluster 2.  Sched_mc can be used to concentrate tasks §  Keeping short-lived tasks off the big CPUs naturally 3.  User-side tools can help out the scheduler by moving tasks between groups §  User side can make decisions based on what is happening §  Android has a reasonably good mechanism already
  • 6. 6 Android cgroups § Android already uses cgroups for task classification and cpuacct for task tracking §  /dev/cpuctl/bg_non_interactive §  Explicit background tasks (services etc.) §  Low priority tasks (auto-background if thread priority low enough – ANDROID_PRIORITY_BACKGROUND) §  Maximum 10% CPU usage §  Root group /dev/cpuctl/ §  All other tasks §  Unconstrained CPU usage § Cgroup control implemented in thread priority setting code in a C library §  used by both Dalvik code and C runtime code §  system/core/libcutils/sched_policy.c
  • 7. 7 Existing cgroup hierarchy § /dev/cpuctl/ §  Root group, load balancing turned on. §  Has to have access to all CPUs §  No changes to this group! § /dev/cpuctl/bg_non_interactive §  Restrict CPU affinity to Core 0 §  Remove CPU% age restriction §  Core 0 likely to be in use for IRQs anyway §  One little core out of the dual cluster setup is rather like a 7.5% restriction in practise and easier for me to think about J
  • 8. 8 New cgroups (1) § /dev/cpuctl/default §  Restricted to CPU0-3 (little CPUs) §  Anything which is not ‘SCHED_BATCH’ (background) sched_policy goes in here §  Load balancing enabled §  Tasks report the same scheduler policy (SCHED_NORMAL) as those in root group §  restrict Android changes to one file §  Use our taskmove program to move all tasks from /dev/cpuctl/tasks to /dev/cpuctl/default/tasks early in boot §  However some tasks don’t move §  Others appearing later end up in the root group too
  • 9. 9 New cgroups (2) § /dev/cpuctl/fg_boost §  Probably not Google’s fg_boost reincarnated (couldn’t find any code) but I liked the name §  Restricted to CPU4-7 (big CPUs) §  Load Balancing enabled §  Tasks in this group report the same scheduler policy as those in root and default groups §  Tasks with SCHED_NORMAL policy AND a priority higher than ANDROID_PRIORITY_NORMAL (i.e. <0) are placed in this group §  I call this ‘priority-based group migration’ § Here we are aiming to give access to the fastest CPUs to the most important (for responsiveness) tasks
  • 10. 10 Hypothesis 1 1.  We can configure cgroups using cpusets to be helpful for static task partitioning §  Use a separate cgroup for each cluster
  • 11. 11 Synthetic Test Suite § 4 Sysbench Compute benchmark threads §  Run 4 at once for 15s with a 10s break and then 4 more for another 15s § 8 CyclicTest threads §  All 8 run for the entire 40s use case § Collect Kernel Ftrace output for each test case § Variable options, driven with single test script - 18 variations tested Test  case cpu_power sched_mc cgroups 1 modified 2 affinity 2 modified 1 affinity 3 modified 0 affinity 4 default 2 affinity 5 default 1 affinity 6 default 0 affinity 7 modified 2 No  affinity 8 modified 1 No  affinity 9 modified 0 No  affinity 10 default 2 No  affinity 11 default 1 No  affinity 12 default 0 No  affinity 13 modified 2 Op=mised   affinity 14 modified 1 Op=mised   affinity 15 modified 0 Op=mised   affinity 16 default 2 Op=mised   affinity 17 default 1 Op=mised   affinity 18 default 0 Op=mised   affinity
  • 12. 12 Synthetic Test 12, no modifications
  • 13. 13 Synthetic Test cgroup Control § Place sysbench threads in ‘fg_boost’ group (big CPUs) § Place cyclictest threads in ‘default’ group (little CPUs)
  • 15. 15 Persistent kworker thread activity § Seen on all cores in all tests § ondemand cpu governor calls do_dbs_timer §  this is the cause of most calls §  ~every 0.3s for each CPU § vm stat generation calls vmstat_update
  • 16. 16 Cgroup control - cyclictest
  • 17. 17 Hypothesis 1 – TRUE § We can configure cgroups using cpusets to be helpful for static task partitioning § The tasks in a group will balance nicely § Cgroups can be used for all situations where we know which threads need to execute on which cluster
  • 18. 18 Hypothesis 2 §  Sched_mc can be used to concentrate tasks §  Keeping short-lived tasks off the big CPUs naturally § Compare two cases: §  Test case 10 §  Sched_mc_power_savings set to 2 §  Cpu_power set to 1024 for all cores §  Cgroups have no affinity §  Test Case 12 §  Sched_mc_power_savings set to 0 §  Cpu_power set to 1024 for all cores §  Cgroups have no affinity
  • 19. 19 It does change spread of tasks 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100% CPU0CPU1CPU2CPU3CPU4CPU5CPU6CPU7 With sched_mc_powersaving Idle% Active% § With powersave enabled: § Tasks are spread over fewer cores § Without powersave § Tasks spread fairly evenly amongst cores § However... 0% 20% 40% 60% 80% 100% CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7 Without sched_mc_powersaving Idle% Active%
  • 20. 20 It doesn’t change much overall § Average CPU usage actually increases slightly in this case §  Difference is generally within a few percent either way §  Can only achieve power saving if we had been able to enter a deeper sleep state on the one core we vacated §  Caveat: model performance & no power management! §  Although we vacated a big core this time, that varies § Difference is not convincing on model, needs evaluating on HW 38.03% 37.84% 0.00% 10.00% 20.00% 30.00% 40.00% 50.00% 60.00% 70.00% 80.00% 90.00% 100.00% overall usage % Overall CPU Usage % for all 8 cores sched_mc_powersave=2 sched_mc_powersave=0
  • 21. 21 Hypothesis 2 – partially TRUE § Sched_mc does concentrate tasks §  Usefulness for power depends on hardware configuration § Sched_mc does not appear to be very useful as an automatic ‘little aggregator’ §  Might not be missing much but.. §  Combination of Sched_mc & asymmetric packing options does not result in migration of tasks towards lower-numbered cores §  No result in this slide set
  • 22. 22 Hypothesis 3 § User-side tools can help out the scheduler by moving tasks between groups § Test with Browser application § Using thread priorities as an indication of important tasks, place threads in either big or little groups as appropriate §  Hook into Android’s priority control § I call this..
  • 23. 23 Priority-Based Group Migration § Android documentation says that foreground applications receive a priority boost so that they get more favourable CPU allocations than other running applications § So use this boosted priority to move threads between clusters! § Easiest option to do that: §  Move threads into a different cgroup §  Assign cpuset.cpus on the groups to separate the clusters, as we described earlier
  • 24. 24 Priority-based Group Migration? § Which threads qualify in the browser? Only UI Threads §  Priority boost only happens for threads involved in drawing or input delivery – in our case mostly surfaceflinger and binder §  Boost also only occurs for short periods of time – average 2.6ms, minimum 530us, max 120ms §  Average Migration Latency is 2.9ms, minimum 768us, max 240ms 0.00% 10.00% 20.00% 30.00% 40.00% 50.00% 60.00% 70.00% 80.00% 90.00% 100.00% 745 800 745 800 745 800 706 706 745 706 745 706 745 706 745 706 745 706 745 706 745 706 745 706 706 745 800 745 706 800 800 745 800 745 800 745 745 706 800 Useful work %age Useful work %age
  • 25. 25 Browser Launch Conclusions § As it happens, the responsiveness boost delivered to applications does not work the way I assumed.. §  I’d hoped that the application as a whole would get boosted but instead individual functions are boosted §  Due to the multi-process UI model in Android, this priority boost ripples across a number of threads as the UI activity is processed which multiplies latency §  Priority boosts are in place for short periods of time (generally milliseconds at a time) which means that we have to be careful about latency § However we are able to move UI threads back and forth between big and little clusters from the Android userspace code with very minimal changes
  • 26. 26 Runtime Cluster Migration Issues § Since the priority boost is only in place for a short time, the latency of this migration becomes very important §  If priority was raised for all foreground application threads while the app was in the foreground, latency would not be high enough to worry about §  Even with this latency, when loading and rendering the test page over 15s we spend a total of 36ms doing migration – but this is only for 60 migration events §  If we are only hitting 60% useful time (i.e. migration is taking 40% of the time spent) then we are unlikely to benefit from this approach §  Migration needs to be below 25% of the time spent for this approach to guarantee performance benefits §  The numbers are likely to change a lot on hardware
  • 27. 27 Hyopthesis 3 – TRUE BUT! § Latency might be a problem, need to evaluate on hardware § On the plus side: §  40% of this latency comes from changing the cgroup of the task which could perhaps be improved in the kernel §  We could make changes to ActivityManager to give better indications about the threads owned by the foreground application §  Also do not assume that the scheduler would have similar latencies if it were making the decisions – no reason for that to be true – this code path goes right through sysfs and cgroups before it gets anywhere near scheduling
  • 28. 28 Try to Minimise Migration Latency § An idea I had: §  When the system is not heavily loaded, we don’t need to use the big cores – the little cores are still quite powerful in their own right. § To test this I hacked up a solution involving CPUFreq §  Modify the sysfs code to allow /sys/devices/system/cpu/cpu0/cpufreq/ scaling_cur_freq to be polled §  Write a dummy CPUFreq driver for my platform with 2 operating points §  Install the ondemand governor so that the cpu would ‘switch’ between these two dummy operating points §  Monitor current frequency of CPU0 in sysfs §  On high frequency, set affinity of fg_boost group to big CPUs §  On low frequency, set affinity of fg_boost group to little CPUs §  Leave Android assigning threads to fg_boost when the priority is high enough
  • 29. 29 Results pending § Initial investigation shows that ondemand governor keeps the cpu frequency at the highest level for pretty much all the time we are interested in § fg_boost group is consequently on big CPUs all the time § Some tweaking of thresholds might be necessary § I suspect latency of ondemand governor + userside-polling + user-side cpuset affinity changes will be relatively large §  Want to evaluate exactly what it does cost on real hardware
  • 30. 30 An alternative § Watch for specific applications starting and force their thread affinity using cgroups § Looks possible but this is in the very early stages §  Probably need a few more alterations in activity manager etc. §  And remove my current ones J §  Easy to identify PIDs belonging to specific Android apps from proc fs and Android’s data directories
  • 31. 31 Recap § It’s easy to control the placement and balancing of threads when you know which thread is which §  You have to know your CPU layout to set up the cgroups § If you want to do it dynamically, Android already does a little of it §  Only ‘UI’ threads are currently picked out and identifiable §  Need to make more invasive changes to increase to include more of the ‘current application’ threads § Latency is relatively high, so might be an issue §  Model is simulating 400MHz, so the 2.4ms average latency might be closer to 0.9ms §  May be ok especially if ‘boosted’ threads are boosted for longer
  • 32. 32 Q&A § Questions and comments gratefully received! § Next steps..
  • 33. 33 Next Steps 1 § Evaluate priority-based cluster migration on hardware §  Latency will be important §  Most threads belonging to an application don’t reach sufficiently high priority – but are they important enough from performance point of view? § Evaluate real impact of cgroup change latency on hardware §  Model only gives an indication that there is latency which needs to be investigated §  In the model, latency is split 40/60 between group change latency and thread reschedule latency
  • 34. 34 Next Steps 2 § Attempt to change Android’s runtime cgroup task management so that the priority boosting applied to tasks is not so short-lived §  Make changes in ActivityManager to more clearly indicate which application is in the foreground §  Introduce a new scheduler policy to Android instead of hanging off priorities. All threads belonging to ‘foreground’ application would have ‘fg_app’ scheduler policy independent of short-term priority boosting. §  Threads would be placed in this policy when application comes to front and removed when application is not on screen.
  • 35. 35 Next Steps 3 § Try out ‘Semi-Dynamic high priority applications’ §  A user-side layer to manage specific applications § For a specific application want to designate as important: §  Identify app UID from /data/data/<app name> §  com.android.browser is app_11 on Linaro Android §  Monitor /proc folder periodically to look for processed owned by the right UID §  When we find it.. §  List contents of /proc/<pid>/tasks §  Place threads in ‘big’ group § Would need to modify the priority-based group assignment so it didn’t clash