Skip to content

Caching of function bindings (input/output) for faster I/O #7310

@gohar94

Description

@gohar94

What problem would the feature you're requesting solve? Please describe.

When a function accesses a remote object via bindings (e.g. blob from storage) or produces an output object, we should cache the object so that it can be served from memory the next time it is requested to improve performance (latency/throughput of fetching the object from remote storage).

Describe the solution you'd like

Using the shared memory architecture implemented earlier to exchange data between the host and out-of-proc language workers (#6791), we can maintain a caching layer on top. Instead of freeing the shared memory resources after single-use, the caching layer can keep data around and provide a mechanism for the storage extension to query that before going to remote storage to retrieve an object. This will reduce the time taken to retrieve objects from remote storage, reduce traffic to upstream storage servers and perform better (perhaps more predictable) performance to the application.

Describe alternatives you've considered

n/a

Additional context

PRs for the caching layer:
#7280
Azure/azure-webjobs-sdk#2692
Azure/azure-sdk-for-net#20209
Azure/azure-functions-python-worker#844
#7757

PRs for shared memory communication between host and workers (completed):
#6791
#6836
Azure/azure-functions-python-worker#816

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions