runner-images icon indicating copy to clipboard operation
runner-images copied to clipboard

The first command invocation on Windows is extraordinarily slow

Open ofek opened this issue 1 year ago • 4 comments

Description

Between 8-25s to run a help command

Note:

  • bash is faster but still affected, powershell is fastest
  • Rust-compiled tools like Cargo and Rustup are significantly slower than Git or Python

Platforms affected

  • [ ] Azure DevOps
  • [X] GitHub Actions - Standard Runners
  • [ ] GitHub Actions - Larger Runners

Runner images affected

  • [ ] Ubuntu 18.04
  • [ ] Ubuntu 20.04
  • [ ] Ubuntu 22.04
  • [ ] macOS 10.15
  • [ ] macOS 11
  • [ ] macOS 12
  • [X] Windows Server 2019
  • [X] Windows Server 2022

Image version and build link

https://github.com/ofek/vector/actions/runs/3456312722

Is it regression?

Unknown

Expected behavior

Minimal start-up penalty

Actual behavior

Extreme start-up penalty

Repro steps

name: Test

on: [push, pull_request]

jobs:
  bash:
    name: ${{ matrix.os }} / bash / ${{ matrix.command }}
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: ["windows-2019", "windows-2022"]
        command: ["cargo --help", "rustup --help", "python --help", "git --help"]

    steps:
    - run: ${{ matrix.command }}
      shell: bash
    - run: ${{ matrix.command }}
      shell: bash

  pwsh:
    name: ${{ matrix.os }} / pwsh / ${{ matrix.command }}
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: ["windows-2019", "windows-2022"]
        command: ["cargo --help", "rustup --help", "python --help", "git --help"]

    steps:
    - run: ${{ matrix.command }}
      shell: pwsh
    - run: ${{ matrix.command }}
      shell: pwsh

  powershell:
    name: ${{ matrix.os }} / powershell / ${{ matrix.command }}
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: ["windows-2019", "windows-2022"]
        command: ["cargo --help", "rustup --help", "python --help", "git --help"]

    steps:
    - run: ${{ matrix.command }}
      shell: powershell
    - run: ${{ matrix.command }}
      shell: powershell

ofek avatar Nov 13 '22 18:11 ofek