Facebook은 Instagram에서 사용하는 Cinder 소스 코드를 공개했습니다.

페이스 북 공개 최근 게시물을 통해 Cinder 프로젝트의 소스 코드 공개입니다. CPython 지점의 포크 파이썬 프로그래밍 언어의 주요 참조 구현입니다.

신더 Facebook의 프로덕션 인프라에서 Instagram을 강화하는 데 사용 성능 향상을위한 최적화가 포함됩니다. 이 코드는 기성 최적화를 CPython의 주류로 마이그레이션하고 다른 CPython 성능 개선 프로젝트를 지원할 가능성을 논의하기 위해 게시되었습니다.

Facebook은 Cinder를 별도의 오픈 소스 프로젝트로 지원하지 않을 것이라고 언급했습니다. 코드는 추가 문서없이 엔터프라이즈 인프라에서 사용되는 형식으로 제공됩니다.

Cinder는 CPython의 대안으로 자신을 홍보하지 않습니다. 주요 개발 목표는 CPython 자체를 개선하는 것입니다.

Cinder의 코드는 상당히 신뢰할 수있는 것으로 간주됩니다. 프로덕션 환경에서 테스트되었지만 문제가 확인되면 Facebook은 외부 오류 메시지에 대한 응답을 보장하지 않으므로 스스로 해결해야합니다. 풀 리퀘스트.

동시에 Facebook은 커뮤니티와의 건설적인 협력을 배제하지 않으며 Cinder를 더 빠르게 만드는 방법이나 준비된 변경 사항을 CPython의 기본 프레임 워크로 이전하는 속도를 높이는 방법에 대한 아이디어를 논의 할 준비가되어 있습니다.

Cinder에서 구현 된 주요 최적화는 다음과 같습니다.

  • 바이트 코드 온라인 캐싱 : 이 방법의 핵심은 최적화 할 수있는 일반적인 opcode 실행 상황을 식별하고 해당 opcode를보다 빠른 특수 옵션으로 동적으로 대체하는 것입니다.
  • 일상적인 평가 : 즉시 처리되는 비동기 함수 호출의 경우 해당 함수의 결과는 코 루틴을 생성하지 않고 이벤트 루프를 호출하지 않고 직접 대체됩니다. Facebook에서 많이 사용하는 코드에서 최적화는 약 5 %의 가속화로 이어집니다.
  • 개별 메서드 및 기능 수준에서 JIT의 선택적 컴파일 : "-X jit"옵션 또는 환경 변수 PYTHONJIT = 1에 의해 활성화되며 많은 성능 테스트를 1,5 ~ 4 배 가속화 할 수 있습니다.
    JIT를 활성화해야하는 기능 목록은 프로필 결과에 따라 결정할 수 있습니다. 앞으로는 함수 호출 빈도에 대한 내부 분석을 기반으로 한 동적 JIT 컴파일 지원이 예상되지만, 인스 타 그램에서 실행되는 프로세스의 특성을 고려할 때 JIT 컴파일은 초기 단계의 Facebook에도 적합합니다.
    JIT는 먼저 Python의 바이트 코드를 Python의 바이트 코드와 상당히 비슷하지만 레코드 기반 가상 머신이 아닌 레코드 기반 가상 머신을 사용하도록 설계된 HIR (고수준 중간 표현)로 변환합니다. 성능과 관련된 추가 세부 정보 및 유형 정보를 사용합니다. 그런 다음 HIR은 SSA (Static Single Allocation) 형식으로 변환되고 참조 횟수 및 메모리 사용량 데이터를 기반으로 최적화 단계를 거칩니다. 결과적으로 어셈블리 언어에 가까운 LIR (Low-Level Intermediate Representation)이 생성됩니다.
  • 모듈에 대한 엄격한 모드 :기능에는 세 가지 구성 요소가 있습니다. StrictModule 유형. 모듈 실행이 해당 모듈 외부의 코드에 영향을 미치지 않음을 확인할 수있는 정적 분석기입니다.
  • 정적 Python : 유형 주석을 사용하여 각 유형에 고유하고 JIT 컴파일을 통해 더 빠르게 실행되는 바이트 코드를 생성하는 실험적인 바이트 코드 컴파일러입니다. 일부 테스트에서 정적 Python과 JIT의 조합은 일반적인 CPython에 비해 최대 7 배 향상된 성능을 보여줍니다. 많은 상황에서 결과는 MyPyC 및 Cython 컴파일러가 사용 된 것처럼 평가됩니다.

최종적으로 Cinder 코드를 얻는 데 관심이 있다면 또는 그것에 대해 자세히 알아 보려면 다음 링크에서 세부 사항.


코멘트를 첫번째로 올려

코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.