A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/Azure/Azure-Functions/issues/1973 below:

Enable shared memory transfer for Python functions · Issue #1973 · Azure/Azure-Functions · GitHub

Discussion: #1977

Motivation

What is the motivation for the change?
This will increase the throughput of Blob trigger binary data transfer between host and Python worker.

Impact

How many customers (roughly) would be impacted by this break? If not known, how can we figure it out? This may require host changes to gather metrics.
Customers using blob triggers may be impacted by this change when updating to v4 (potential ~80k function apps). Using the following query can get the list of function app using blob triggers.

set query_results_cache_max_age = time(1d);
let SiteFunctionMetrics = FunctionsMetrics
| where TIMESTAMP > ago(1d)
| where FunctionName != 'WarmUp' and FunctionName != '';
SiteFunctionMetrics
| where EventName startswith "function.binding."
| extend EventNameParts = split(EventName, '.')
| extend BindingName = tostring(EventNameParts[2]), BindingDirections=tostring(EventNameParts[3])
| extend Trigger       = iif(BindingDirections == '' , BindingName, '')
| extend InputBinding  = iif(BindingDirections in ('inout','in' ), BindingName, '')
| extend OutputBinding = iif(BindingDirections in ('inout','out'), BindingName, '')
| summarize TIMESTAMP = max(TIMESTAMP)
by Trigger, InputBinding, OutputBinding, FunctionName, EventName
| summarize TIMESTAMP = max(TIMESTAMP), Trigger = max(Trigger), InputBindings = makeset(InputBinding), OutputBindings = makeset(OutputBinding)
by FunctionName
| extend InputBindings  = replace('\\\"', '', tostring(InputBindings))
| extend OutputBindings = replace('\\\"', '', tostring(OutputBindings))
| extend InputBindings  = replace(',,', ',', trim(',', substring(InputBindings , 1, strlen(InputBindings )-2)))
| extend OutputBindings = replace(',,', ',', trim(',', substring(OutputBindings, 1, strlen(OutputBindings)-2)))
| extend InputBindings = iif(InputBindings == '', Trigger, strcat(Trigger, ',', InputBindings))
| where Trigger == 'httptrigger'
| distinct FunctionName
Compat-mode support

We'd like to enable compat-mode support for every breaking change. This may not be feasible in reality, but each proposal should include a plan to switch back to the previous behavior with a feature flag. This requirement will be evaluated on a case-by-case basis.

Turning off the FUNCTIONS_WORKER_SHARED_MEMORY_DATA_TRANSFER_ENABLED feature flag will disable this feature.

Detection

Can we detect that a customer is using this when they upgrade from v3? Is there a specific error that can be thrown with a link to migration guidance?

Checking the FunctionsLogs table for Summary contains "shared memory" will show warnings and errors of this feature.

Support

Will there be any incidents-per-day impact? Who will be the support contact? Does support need to be notified of this change? (SPOT)
The point of contact will be @gohar94 and @vrdmr.

Documentation

Documentation impact
Update feature flag FUNCTIONS_WORKER_SHARED_MEMORY_DATA_TRANSFER_ENABLED section in App Settings reference.

Components impacted

What components does this change impact? Examples of areas (this list may not be exhaustive):
- Host
- Python Worker

Performance

Does the change have any performance impact? There may need to be some implementation complete before this can be measured.
By measurement in prototype, this will increase blob trigger throughput around 20% for Python function apps.

/cc: @AnatoliB @gohar94 @vrdmr @stefanushinardi


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4