최상위 문을 사용하는 AWS Lambda .NET의 기본 성능

5783 단어 awsserverlessdotnet
.NET 6은 애플리케이션 코드의 진입점을 단순화하는 최상위 문을 도입했습니다. 이전 스타일의 Lambda 정의와 달리 이 프로젝트는 어셈블리 대신 실행 파일을 생성합니다. 즉, 자체 Lambda 호스트 구현을 제공해야 합니다. 다행히 AWS는 이미 Amazon.Lambda.RuntimeSupport package 에서 하나를 제공합니다.

최소 최상위 Lambda 함수



MinimalTopLevel project은 스트림을 받아 빈 응답을 반환하는 Lambda 함수를 정의했습니다. 비즈니스 로직이 없으며 필수 라이브러리만 포함합니다. 페이로드의 역직렬화도 없습니다. 오버헤드가 가장 적은 최상위 문을 사용하는 Lambda 함수입니다.

using Amazon.Lambda.Core;
using Amazon.Lambda.RuntimeSupport;
using Amazon.Lambda.Serialization.SystemTextJson;

await LambdaBootstrapBuilder.Create(Handler, new DefaultLambdaJsonSerializer())
    .Build()
    .RunAsync();

Task Handler(Stream request, ILambdaContext context)
    => Task.CompletedTask;


x86-64의 .NET 6에 대한 벤치마크 데이터



다시 한 번, INIT 단계의 기간은 3,008MB 임계값을 초과할 때까지 영향을 받지 않으며 이로 인해 비용도 증가합니다.

그러나 에 비해 이 Lambda 함수는 콜드 스타트 ​​기간이 20%~100% 더 깁니다.


메모리 크기
초기화
감기 사용
총 콜드 스타트
사용된 총 웜(100)
비용(µ$)


128MB
235.420
1,484.898
1,720.318
367.174
24.05849

256MB
236.617
744.375
980.992
151.328
23.93210

512MB
236.002
353.587
589.589
120.821
24.15341

1024MB
238.403
163.425
401.828
115.392
24.84696

1769MB
234.304
96.894
331.198
115.843
26.32520

5120MB
216.870
92.632
309.502
117.367
37.69996




Fullsize Image



Fullsize Image

최소 콜드 스타트 ​​기간



다행히 최소 콜드 스타트 ​​기간에 대한 최적의 구성을 살펴보면 상황이 상당히 개선됩니다. 최상위 문을 사용하면 일부 오버헤드가 INIT 단계에서 첫 번째 INVOKE 단계로 이동하지만 그렇지 않은 경우 총 기간은 .


건축물
메모리 크기
계층
레디투런
PreJIT
초기화
감기 사용
총 콜드 스타트


암64
5120MB


아니요
178.743
70.947
249.690

x86_64
5120MB

아니요
아니요
190.382
67.500
257.882

x86_64
1769MB


아니요
189.152
58.625
247.777

x86_64
5120MB


아니요
176.368
57.039
233.407




Fullsize Image

최소 실행 비용



다시 말하지만 ARM64 아키텍처는 가장 비용 효율적인 접근 방식입니다. ReadyToRun, Tiered Compilation 및 PreJIT 설정은 모두 최소 최상위 프로젝트의 비용을 조금 더 줄이는 데 기여합니다. 즉, 최소 실행 비용은 최상위 명령문을 사용할 때 ~8.5% 더 높습니다. 이러한 비용 증가는 INIT 및 첫 번째 INVOKE 단계의 증가된 오버헤드를 보상하는 데 필요한 더 높은 메모리 구성 때문일 가능성이 큽니다.


건축물
메모리 크기
계층
레디투런
PreJIT
초기화
감기 사용
사용된 총 웜(100)
비용(µ$)


암64
1024MB
아니요

아니요
234.381
168.534
122.581
24.08155

암64
1024MB
아니요


252.593
167.558
124.272
24.09109

암64
1024MB


아니요
202.952
124.406
152.314
23.88962

암64
1024MB



218.905
118.831
152.727
23.82079




Fullsize Image

무엇 향후 계획



.NET 함수용 AWS Lambda의 기본 사항에 대해 알아가는 것이 즐거웠습니다. 이 게시물은 탐색하기에 흥미로울 수 있는 향후 프로젝트에 대한 내 발견과 생각을 요약한 것입니다.

좋은 웹페이지 즐겨찾기