본문 바로가기

컴퓨터6

[번역] Anti-Caching: A New Approach to Database Management System Architecture Anti-Caching: A New Approach to Database Management System Architecture Justin DeBrabant, Andrew Pavlo, Stephen Tu 원문 ABSTRACT 디스크 기반 관계형 데이터베이스 관리 시스템(DBMS)을 구축하는 전통적인 방법은 메인 메모리 블록 캐시와 함께 디스크에 저장된 고도로 인코딩된 블록으로 데이터를 구성하는 것입니다. 이러한 시스템은 높은 디스크 대기 시간을 고려하여 성능을 개선하기 위해 여러 트랜잭션이 동시에 데이터베이스에 액세스할 수 있는 동적 레코드 수준 잠금 기능을 갖춘 다중 스레드 아키텍처를 사용합니다. 이전 연구에 따르면 이로 인해 온라인 트랜잭션 처리(OLTP) 애플리케이션에 상당한 오버헤드가 발생하는 .. 2023. 8. 15.
CPU 캐시를 고려한 최적화 사례 Repeat(s string, count int) string strings.Repeat("hi", 5) --> "hihihihihi" Golang 기본 라이브러리 strings의 Repeat 메서드는 넘긴 s 문자열을 count 번 반복하고, 그 문자열을 리턴하는 메서드다. 최적화 전 기존 코드를 먼저 보자. func Repeat(s string, count int) string { if count == 0 { return "" } // Since we cannot return an error on overflow, // we should panic if the repeat will generate // an overflow. // See Issue golang.org/issue/16237 if cou.. 2023. 5. 23.
[Go] 메모리 할당 위치 해당 글의 대부분은 https://dave.cheney.net/2014/06/07/five-things-that-make-go-fast 글을 번역한 내용입니다. 링크의 글은 'Go를 빠르게 만드는 5가지'라는 주제로 여러 예시와 함께 잘 정리되어 있습니다. Most of this article is a translation of an article from 'https://dave.cheney.net/2014/06/07/five-things-that-make-go-fast'. The article at the link is called "5 things that make Go fast" and is well organized with lots of examples. This post is not mone.. 2023. 4. 11.
[번역] An O(1) algorithm for implementing the LFU cache eviction scheme An O(1) algorithm for implementing the LFU cache eviction scheme Prof. Ketan Shah, Anirban Mitra, Dhruv Matani August 16, 2010 원문 (참고): Go 구현 Abstract 캐시 제거 알고리즘은 애플리케이션에서 사용하는 데이터를 캐싱하여 실행 속도를 높이기 위해 캐시를 사용하는 운영 체제, 데이터베이스 및 기타 시스템에서 널리 사용됩니다. 다음과 같은 많은 정책이 있습니다. MRU(가장 최근 사용), MFU(가장 자주 사용), LRU(가장 최근 사용), LFU(가장 적게 사용) 등 다양한 정책이 있으며, 각각 장단점이 있으므로 특정 시나리오에 따라 사용됩니다. 지금까지 가장 널리 사용되는 알고리즘은 O(1)의.. 2023. 3. 11.
[번역] TIME_WAIT Coping with the TCP TIME-WAIT state on busy Linux servers Vincent Bernat 2014. 2. 25. The license CC BY-NC-SA 3.0 원문 Linux 4.12 이후에는 더 이상 존재하지 않는 net.ipv4.tcp_tw_recycle 을 활성화하지 마세요. 대부분의 경우 TIME_WAIT 소켓은 무해합니다. 그렇지 않은 경우 권장 솔루션에 대한 요약으로 이동하세요. Linux 커널 문서는 net.ipv4.tcp_tw_recycle 및 net.ipv4.tcp_tw_reuse의 기능에 대해 그다지 도움이 되지 않습니다. 이러한 문서 부족으로 인해 수많은 튜닝 가이드에서 이 두 설정을 모두 1로 설정하여 TIME-WAIT 상태의 항목 수를 .. 2023. 3. 6.
MTU (Maximum Transmission Unit) MTU란 단어는 네트워크 기초를 공부하다보면 한번쯤은 접하게 되는 용어이며, 특정 네트워크 계층에서 전송할 수 있는 최대 크기를 의미한다. 데이터 링크 계층인 이더넷에서 MTU가 몇일까 생각해보면 보통은 1500이란 값을 떠올린다. 이는 기본 MTU 값으로 정해져 있기 때문인데, 초기 네트워크 인터페이스 카드에는 많은 양의 프레임(바이트)을 포함할 수 있는 큰 버퍼가 없었기 때문에 당시에는 1500바이트가 "괜찮은" 것처럼 보였다고 한다. 하지만 현대에 와서는 네트워크 속도가 빨라지고 전송해야 할 데이터의 크기도 급속하게 증가하고 있기 때문에 1500바이트란 값이 작다고 느껴질 수 있다. 큰 데이터를 잘게 잘라서 여러 번 보내는 것보다는 큰 덩어리로 적게 보내는 것이 더 빠른것은 당연한 결과일 것이다. .. 2023. 2. 26.