분류 전체보기 270

디스크를 교체했더니 디스크 I/O 지연이 발생했다면? "파티션 정렬" 하고 가세요!

​  0 파티션 정렬의 필요성 데이터베이스나 Hadoop 어플리케이션을 띄우고, 데이터는 4 TByte(Tera Byte)의 하드 디스크에 저장하며 잘 사용하고 있었습니다. 어느 날, 그 디스크가 깨져서 새로 교체를 하고 파일시스템을 포맷 하였는데요, 그 뒤로 I/O가 눈에 띄게 지연되는 것을 느끼게 됐습니다.그 이유가 뭘까요?​그 이유는 바로 파티션의 시작점이 정렬되지 않았기 때문입니다. OS는 설치 시에 인스톨러가 똑똑하게도 알아서 파티션의 시작 위치를 정렬하여 첫번째 파티션을 만들어주기에, 파티션 정렬이라는 개념을 고려할 필요가 없었습니다. 그러나 OS가 설치된 이후에 어떤 이유에 의해서 사용자가 직접 파티션을 만들게 되는 위와..

Linux, 부팅, Swap, Dependency, Boosting

Linux, 부팅, swap, dependency, booting (tistory.com) Linux, 부팅, swap, dependency, bootingLinux 시스템이 너무 빨리 부팅되어 대부분의 출력이 너무 빨리 스크롤되어 콘솔로 전송된 텍스트(시작 중인 서비스 표시)를 읽을 수 없습니다. 따라서 부팅 문제/오류를 관찰하는 것은 우리에게flightsim.tistory.com     0.  Intro   Linux 시스템이 너무 빨리 부팅되어 대부분의 출력이 너무 빨리 스크롤되어 콘솔로 전송된 텍스트(시작 중인 서비스 표시) 를 읽을 수 없습니다. 따라서 부팅 문제 오류를 관찰하는 것은 우리에게 약간의 도전이 됩니다  이 기사에서는 Linux 시스템 부팅 프로세스의 여러 단계를 간략하게 설명한 다..

Partition 1 does not start on physical sector boundary.

노트북에서의 컴파일은 결국 한계를 느끼고,Main PC에 Ubuntu 20.04를 새로 설치하는 중 SSD에선 잘만 깔리더만PC Sub Hard drive는 파티션을 인식하지 못한다. Disk /dev/nvme0n1: 476.96 GiB, 512110190592 bytes, 1000215216 sectorsDisk model: Samsung SSD 970 PRO 512GB Units: sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisklabel type: gpt..

Linux - diff 명령어 사용법 (파일비교)

diff 명령어  : 리눅스에서 파일을 비교하는 명령어. file1과 file2를 비교하여 차이점을 찾아냄$diff [옵션] file1 file2   옵션  -b  : 연속된 공백 무시-i   : 대소문자를 구분하지 않음-t   : 출력 라인에 TAB 문자를 넣음-w  : 두 행의 비교 시 공백을 무시--brief : 파일 비교 후 결과 표시(같은지, 다른지)-d  : 세세한 차이까지 검색-H  : 큰 파일을 빠르게 처리할 때 사용-q  : 두 파일의 차이점만 출력-s   : 두 파일이 같은 지 확인-r   : 두 디렉토리의 차이점 출력-u  : undirectional new file 옵션으로 비교하는 파일/디렉토리가 빠져있을 경우 dummy로 처리해서 출력을 통일시킴-r   : recursive 하위..

VCS (Version Control System, 버전관리 시스템)

1.1 시작하기 - 버전 관리란? 이 장에서 설명하는 것은 Git을 처음 접하는 사람에게 필요한 내용이다. 먼저 버전 관리 도구에 대한 이해와 Git을 설치하는 방법을 설명하고 마지막으로 Git 서버를 설정하고 사용하는 방법을 설명한다. 이 장을 다 읽고 나면 Git 탄생 배경, Git을 사용하는 이유, Git을 설정하고 사용하는 방법을 터득하게 될 것이다. 버전 관리란? “버전 관리” 는 무엇이고 우리는 왜 이것을 알아야 할까? 버전 관리 시스템은 파일 변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 다시 꺼내올 수 있는 시스템이다. 이 책에서는 버전 관리하는 예제로 소프트웨어 소스 코드만 보여주지만, 실제로 거의 모든 컴퓨터 파일의 버전을 관리할 수 있다. 그래픽 디자이너나 웹 디자이너도 버..

리눅스 동적 정적 라이브러리

1.  동적 라이브러리   5.5.1  OCRAM protection 실행 시간에 라이브러리 파일을 찾아 코드를 포함하기 때문에 동적라이브러리라고 부릅니다.즉, 정적 라이브러리는 컴파일 시간에 코드를 결정하기 때문에 소스가 변경되면 새로 컴파일 해야하지만, 동적 라이브러리의 경우 라이브리만 교체하는 것으로도 변경이 가능합니다.$ gcc -c -fPIC test.c$ gcc -c app.c fPIC옵션은 Position-Independent Code의 약자이며 test.o파일을 동적라이브러리로 사용하도록 컴파일 하는 옵션입니다.이렇게 컴파일된 오브젝트 파일을 .so파일로 묶으면 됩니다.$ gcc -shared -fPIC -o libtest.so test.o컴파일은 아래와 같이 하면 됩니다.$ gcc -o ..

Linux C/C++ shared library 컴파일하기 fPIC 옵션 GOT, PLT

Linux C/C++ shared library 컴파일하기   C++   g++ -shared -fPIC -o g++ -shared fPIC -o lib.so code.cpp    C   gcc -shared [-fPIC] -o gcc -shared [-fPIC] -o lib.so code.c -fPIC 옵션은 생략이 가능하지만, 공유라이브러리를 만들 때는 -fPIC 옵션 사용을 권장합니다.(컴파일 종류에 따라서 -fPIC는 필수 옵션입니다.) fPIC를 사용하지 않을경우 재배치 기법을 사용하게 되는데,간략하게, 라이브러리의 주소를 현재 사용하려는 프로세스 주소에서 접근가능하게 재배치 한다는 개념입니다.    공유 라이브러리의 단점 1. 여러 프로세스가 공유라이브러리를 공유하게되면 각 프로세스가 로드 ..

[c++] override, const_iterator, noexcept, constexpr 사용하기

들어가기 이번에는 C++11에서 override, const_iterator, noexcept, constexpr에 대해서 살펴보자. 작성자: ospace114@empal.com, http://ospace.tistory.com/ override 선언 C++11에서는 파생 클래스(derivered class)에서 기반 클래스(base class)의 가상 함수를 재정의(override)할 때에 함수에 override을 붙인다. 기존에는 잘못으로 인한 잠재적 오류 가능성이 있다. override을 사용해서 명시적으로 지정하여 조건에 맞지 않으면 에러가 발행하도록 한다. 실제 사용 예를 보자. class Base { public: virtual void mf1() const; virtual void mf2();..