Re:iPhones and action discoverability
by saagarjha on Saturday September 24, 2022 @08:51PM
(#32967976)
Note that enabling "Back Tap" will cause a daemon to run in the background all times taking a couple percent CPU (to detect this action, of course). I don't have very good numbers of the battery life impact but my guess is that it's perhaps half an hour or so. Might be worth keeping in mind when deciding whether to enable this feature.
[ Parent
| on HN ]
Re:iPhones and action discoverability
by vineyardmike on Sunday September 25, 2022 @06:19AM
(#32970162)
> Note that enabling "Back Tap" will cause a daemon to run in the background all times taking a couple percent CPU
Is this true? I was under the impression that iPhones (and most modern high end devices) had dedicated hardware to monitor these sort of features, and triggers a system event in the OS (the same way you don’t need a daemon to check for a keyboard or power button).
Re:iPhones and action discoverability
by saagarjha on Sunday September 25, 2022 @07:26PM
(#32977538)
It is, the process is named "AccessibilityUIServer". There is a dedicated motion coprocessor but when the events come back the are plumbed through CoreMotion to a framework called Phoenix, which runs a ML model on them.
Source?
This sounds like bullshit to anyone that knows how interrupts work.
Re:iPhones and action discoverability
by saagarjha on Sunday September 25, 2022 @07:30PM
(#32977565)
This is a primary source :) Something needs to handle those interrupts. Perhaps this stack trace from the profiler may be enlightening as to what that thing is:
810 -[AXPhoenixClassifier _handleAccelerometerData:withTimestamp:]
563 -[MLModel predictionFromFeatures:error:]
561 -[MLNeuralNetworkEngine predictionFromFeatures:options:error:]
542 _dispatch_lane_barrier_sync_invoke_and_complete
542 _dispatch_client_callout
541 __62-[MLNeuralNetworkEngine predictionFromFeatures:options:error:]_block_invoke
521 -[MLNeuralNetworkEngine evaluateInputs:options:error:]
519 -[MLNeuralNetworkEngine evaluateInputs:options:verifyInputs:error:]
491 _dispatch_lane_barrier_sync_invoke_and_complete
491 _dispatch_client_callout
491 __67-[MLNeuralNetworkEngine evaluateInputs:options:verifyInputs:error:]_block_invoke.195
491 -[MLNeuralNetworkEngine evaluateInputs:bufferIndex:options:error:]
363 -[MLNeuralNetworkEngine executePlan:error:]
359 espresso_plan_execute_sync
358 EspressoLight::espresso_plan::execute_sync()
351 EspressoLight::espresso_plan::dispatch_task_on_compute_batch(std::__1::shared_ptr<Espresso::abstract_batch> const&, std::__1::shared_ptr<EspressoLight::plan_task_t> const&)
296 Espresso::net::__forward(std::__1::shared_ptr<Espresso::abstract_batch> const&, int, int)
294 Espresso::net_compiler_segment_based::__forward(std::__1::shared_ptr<Espresso::abstract_batch> const&)
290 Espresso::ANERuntimeEngine::compiler::__forward_segment(std::__1::shared_ptr<Espresso::abstract_batch> const&, int, Espresso::net_compiler_segment_based::segment_t const&)
254 -[_ANEClient doEvaluateDirectWithModel:options:request:qos:error:]
247 -[_ANEProgramForEvaluation processRequest:model:qos:qIndex:modelStringID:options:error:]
221 H11ANEProgramProcessRequestDirect
214 H11ANE::H11ANEFrameReceiver::ProgramProcessRequest(H11ANE::H11ANEFrameReceiverRequest&, H11ANESharedEventsStruct*, bool)
201 H11ANE::H11ANEDevice::ANE_ProgramSendRequest(H11ANEProgramRequestArgsStruct*, unsigned int, bool, H11ANEReqCallbackDataStruct*)
200 IOConnectCallAsyncMethod
200 io_connect_async_method
199 mach_msg2_internal
199 mach_msg2_trapOh wtf, back tap is implemented with the accelerometer? I assumed the back logo was a touch sensor.
This would make for a really good blog post if you can measure the impact. "Enabling back tap in iOS reduces battery life by half an hour"