microsoft / microsoft/msix-packaging

[Question] MSIX installation efficiency with hundreds of files in a package

Open
#677 0 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Needs-Triage
Dominant language
C
Stars
1.1k
Forks
193
Avg merge
2h 16m
Merged PRs (30d)
2

Description

Context

When MSIX package is installed from a remote HTTPS source, Delivery Optimization service downloads necessary chunks using partial HTTP 206 requests. The desired chunk size used by DO is usually 1MB, but in real life, smaller files in a package lead to much smaller range requests.

For example, in the worst case scenario when a package contains 5000 tiny files it results into 5000 sequential range requests. This essentially kills the install performance.

Question

For some reason MSIX/DO download each file separately instead of combining them into a single 1MB range request. Why is it happening and is it something that is possible to optimize somehow?

  • I suspect it is due to LFH (local file headers), but at the same time it should be possible to download redundant LFH and ignore them.
  • Similar MS Store downloads use a different strategy and are not affected by this problem. I can see consistent 1MB chunk downloads for MS Store.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing a remote HTTPS installation with an MSIX package containing many tiny files, then inspect the Delivery Optimization HTTP 206 range requests described in the issue. Done means explaining why requests are issued per file and identifying whether the behavior can be optimized, based on the MSIX SDK and Delivery Optimization boundaries.

Written by the indexing model from the issue text.

Assessment

Domain
operating-systems, performance
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.