- M.2 는 한때 NGFF(Next Generation Form Factor)라 불렸던 차세대 폼 팩터에 사용된 커넥터 사양이다. M.2 는 mSATA 표준을 대체하고, PCIe Mini Card 와 동일한 규격의 커넥터 규격을 사용한다. 2013년 부터 도입되었으며 10여년이 지난 지금은 널리 사용되고 있다.
- 요즘엔 주로 카드 형식의 SSD 를 연결할때 사용하는 형식이다.
2. M.2 SATA
SATA 방식 M.2 SSD. B 키와 M 키가 있다.
- M.2 커넥터로 SATA 통신을 하는 규격이다. 운영체제에서는 AHCI 컨트롤러에 연결된 SATA 하드디스크로 인식된다. M.2 초창기에는 주로 사용되던 형식이었으나, 현재는 성능상의 문제로 사용하지 않는다. M.2 SATA 형식의 SSD 를 사용할 때에는 마더보드에서 지원하는지 반드시 확인해야 한다. 최대 600MB/s (SATA 3규격과 동일)까지 지원된다.
3. M.2 PCIe
- M.2 커넥터로 PCIe 통신을 하는 규격이다. 하지만 PCIe 위에 AHCI 컨트롤러가 자리잡고 있기 때문에 운영체제에서는 AHCI 컨트롤러에 연결된 장치로 인식한다. 구형 마더보드에서는 지원하지 않는 경우도 있어 이 형식의 SSD를 사용하는 경우 반드시 확인해야 한다. 보통 PCIe 2.0 x4 속도까지 지원했다.
4. M.2 NVMe
NVMe 방식 M.2인 T705. M키만 있다.
- M.2 커넥터로 PCIe 통신을 하는 규격이다. 하지만 운영체제에서는 NVMe(Non-Volatile Memory Express) 장치로 인식된다. 어쨌든 PCIe 규격으로 통신하기 때문에 PCIe 규격과 호환된다. M.2 PCIe 와 M.2 NVMe 와의 차이점은 운영체제 레벨에서 어떻게 인식되느냐에 있고, 이때문에 지원하는 속도가 NVMe 가 훨씬 빠르다. NVMe 는 AHCI 보다 대기열의 명령큐가 증가(32 -> 64K)하고, 다중 대기열 사용할 수 있으며, CPU에서 직접 접근해 레이턴시(지연)가 낮고(6ms -> 2.8ms), 운영체제에서 더 빠른 드라이버를 사용할 수 있어 AHCI에 비해 IOP향상(100k -> 1M IOP)이 가능해지는 등의 많은 이점이 있다. PCIe 3.0 x4 속도 이상 되는 SSD는 모두 이 방식이다. NVMe PCIe 3.0 x4 의 경우 3,940MB/s 까지 지원된다.
5. 2230, 2242, 2260, 2280, 22110
- 카드의 크기다. 22 는 22 mm 을 의미하며 카드의 너비다. 30, 42, 60, 80 은 카드의 길이이며 단위는 mm이다.
- 너비가 22mm 규격 이외의 것도 M.2 에 정의되어있지만 PC에서 사용되는 규격은 22 만 있다. 많은 마더보드에서 2242 ~ 2280 까지 지원한다. 2230 과 22110 규격의 기기를 사기 전에 마더보드에서 장착되는지 반드시 확인해야 한다.
6. 방열판
NVMe 형태의 SSD는 발열이 있다. 연속해서 많은 데이터를 읽고 쓰는 경우에는 무시하기 어려울 정도로, 발열때문에 성능이 하락할 정도로 열이 심하다. 따라서 이런 경우에는 방열판이나 액티브 쿨링을 사용해야 한다.
7. Key
- M.2 장치에는 Key(키)라고 불리는 부분이 있다. 일종의 홀인데 지원하지 않는 기기를 장착하지 못하도록 키의 위치를 달리해 제조한다.
- A ~ M 까지 있는데 데스크탑 M.2 저장장치에서 중요한건 B 와 M 키다. B 키는 SATA 및 PCIe x2 방식에 사용되고, M 키는 SATA 및 PCIe x4 방식에 사용된다. 최신 NVME SSD 는 PCIe x4 가 필요하기 때문에 M 키만 뚫려있다.
- A 키와 E 키는 PCIe x1 을 지원하기 때문에 WiFi 나 블루투스 기기에서 주로 사용된다.
8. Socket
- Socket 은 7. 에서 설명한 Key 와 같은 의미인데 호스트의 관점에서 본다. 마더보드 스펙에는 Socket 으로 표기되어있다.
- Socket 1 ~ 3 까지 있다.
→ Socket 1은 Wifi 및 블루투스 → Socket 2는 WWAN, GNSS, SSD Cache → Socket 3은 SATA 및 PCIe 방식의 저장장치
따라서 저장장치에서는 Socket 3를 사용한다.
9. 대역폭 공유 및 장치 공유
M.2 에 SATA 모드로 사용시 특정한 SATA 소켓이 비활성화 되거나 M.2 에 PCIe/NVMe 모드로 사용시 특정한 PCIe 슬롯이 비활성화 되는 경우가 있다. 어느 부분이 어떻게, 얼마나 줄어드는지는 마더보드 매뉴얼을 읽어보자.
10. DRAM
플래시 메모리기반 저장장치는 각 셀의 사용 정보(각각의 셀이 쓰기를 몇번 했는지, 수명이 다된 셀은 몇번으로 대체되었는지에 대한 정보)를 기록해 놓는데, 이 정보는 셀이 변경될때마다 매번 바뀌어야 하고, 특히 셀 대체 정보는 셀에서 데이터를 읽고 쓸때마다 계속 참조해야 한다. 아무래도 플래시메모리보다는 DRAM 이 더 빠르기 때문에 DRAM 을 사용해 속도향상을 도모한다. DRAM 이 없으면 속도가 2000 MBps 정도가 한계고 매핑이 발생한 순간부터는 매우 느려진다. SSD 에서 오래써도 성능저하를 줄이려면 DRAM 은 필수인셈.
HDD 에서는 DRAM 이 버퍼로 사용되지만, SSD 에서는 매핑 정보를 담아 빠르게 참조할 수 있는 저장공간으로 사용된다는게 다르다.
11. SSD 수명
SSD 는 수명이 정해져 있다. 셀당 쓰기가 일정한 회수 이상은 쓰기가 안된다. 수명이 다 된 셀은 매핑해서 다른 셀로 대체해 사용한다. 대체할 셀 조차 없으면 SSD 는 더이상 사용할 수 없다.
이렇게 이야기 해도 일상적인 사용환경에서는 10년 이상 사용할 수 있다.
수명 확인은 S.M.A.R.T. 정보를 읽어오는 프로그램을 사용해 확인할 수 있다. 아래 스크린샷의 왼편에 99% 라고 써 있는게 수명이다. 스크린샷의 오른편의 읽기/쓰기량이 많아질 수록 급격하게 수명이 깎인다. 일년에 한번정도는 확인하는게 좋다고 생각한다. 0% 떨어지면 못 사용하니 그 전에 바꾸자. 50% 만 되어도 매핑이 많아져서 성능 하락이 쉽게 느껴진다.
※ 마더보드 스펙 읽기
아래 매뉴얼을 보면
- M.2 Socket 3 타입의 소켓 2개가 있고, M 키를 지원한다.
- M.2_1 포트는 32Gb/s 로 작동한다. M.2_2 포트는 16Gb/s 으로 작동한다.
- M.2_1 이 SATA 모드로 작동할때에는 SATA_1 포트가, M.2_2 이 SATA 모드로 작동할 때에는 SATA_6 포트가 비활성화 된다.
- PCIe 모드로 작동할때에는 비활성화 되는 기기에 대한 언급이 없다. 마더보드에 사용된 칩셋의 대역폭이 충분한경우 비활성화 되지 않는다.
SDXL 이 공개(2023.07.28)된지 약 6개월이 지났다. 필자는 아직 SD1.5를 주로 사용하고 있지만, SDXL 도 점점 사용회수를 늘이는 중이다. SDXL 을 사용하면서 선명도 때문에 언젠간 SD1.5 에서 SDXL 으로 전환해야 한다는 생각은 하고 있지만, SD1.5 도 6개월 전에 비해 많이 발전했기 때문에 전환할 일정은 좀 나중이 될거 같다. 아직도 에니메이션 풍의 그림은 SDXL 보다 SD1.5가 더 좋다. 아니면 최종적으로 병행해 사용하거나 말이다.
SDXL 으로 그린 그림. 선명한 그림을 그릴 수 있어 좋지만, 아직 에니풍의 화면은 무리다.
- 현재 SD WebUI 에서 SDXL 을 원활히 사용하기 위해 필요한 메모리 양은 윈도11의 경우 시스템 메모리 24GB 이상, VRAM 12GB 이상이다. CPU 는 크게 상관 없다. 듀얼코어에서도 크게 문제 없다.
- VRAM 이 8GB 인 경우에도 문제 없이 실행해볼 수 있다. --medvram-sdxl 옵션을 사용해야 한다. 시스템 메모리는 조금 많아야 한다.
- VRAM 이 4GB 인 경우에도 --lowvram 옵션을 사용해 실행할 수 있다. 해보지는 않았다.
- 반드시 nVidia 드라이버 최신 버전 사용하고, 리눅스사용할 경우 tcmalloc 반드시 사용하도록 하자.
- 스토리지가 많이 필요하다. 체크포인트만 해도 최소 6GB 이고, LoRA 파일의 용량도 SD1.5 에 비해 평균적으로 3배는 크다.
- SD1.5 에 비해 생성할 이미지의 해상도를 늘여야 하기 때문에 그만큼 느리다. 필자는 SD1.5 는 512x768, SDXL 은 832x1216 을 기본 해상도로 사용하고 있다. 그만큼 메모리 많이 먹는다.
- 필자는 현재 SD WebUI 에 "--xformers --no-half-vae" 옵션만 붙여서 사용하고 있다.
RTX 4060 을 사용한 그래픽 카드중 LP(Low Profile)을 지원하는게 나왔다고 해서 한번 찾아봤다. 정말 나와있었다. Gigabyte GeForce RTX™ 4060 OC Low Profile 8G 이 바로 그거다.
일반적으로 LP 규격은 슬림 PC 에 주로 사용하고, 슬림PC는 대기업 PC에서 주로 사용되는 규격이다. 하지만 LP 는 케이스 공간이 협소하기 때문에 냉각에 문제가 있어, 발열이 많은 최신 그래픽 카드를 사용하기에는 문제가 있었다. 4060 은 TDP 가 115W 이기 때문에 보조전원까지 필요한 그래픽 카드이고 그만큼 발열이 많은 바, 따라서 LP 에서 사용하기엔 어려웠다. 보통 75W 이하인 보조전원 없는 GPU, 예를들어 xx30 이나 xx50 번대 그래픽 카드로 LP 형식에 맞춰 제조했기 때문에 xx60번대 GPU인 4060 을 LP 로 만든건 의외였다.
어쨌든 나왔고, 4060의 원래 성능과 차이가 없다고 한다. 가격대가 높지만 LP 가 필요한 시스템에서는 충분히 구입할만해 보인다.
전원부가 윗쪽이 아닌 측면에 있고, 50mm 팬 3개를 달았다. 카드 크기는 L=182 W=69 H=40 mm 이다. 그래픽 카드는 생각보다는 아담해 보인다. 구매하지는 않겠지만 재미있는 제품이다.
사이트 로그를 보다가 재미있는 로그가 나와서 적어본다. 정상적이지 않은 로그고 따라서 어떤걸 노렸는지 이해가 가지 않는 로그다. 발신지 IP를 조회해보니 미국으로 나왔다.
JAVA 나 JavaScript, Shell 를 사용한걸 노린거 같고, PostgreSQL 을 사용한걸 가정한듯 하다.
1. 문자열에 PG_ 으로 시작하는 쿼리처럼 생긴 문장이 있다. 2. response.write 로 시작하는 구문이 있다. Java JSP 에서 수식을 계산한건데 Integer 오버플로를 노린거 같아 보인다. 3. Shell 스크립트를 노리기도 했다. nslookup 으로 특정 도메인을 조회하려 했다.
재미있는 LoRA 가 올라와서 만들어보았다. 곧있으면 신년이기도 해서, 랜턴 이미지는 준비하고 있었는데, 바이올린과 같이 만들면 어떨까 해서 만들어봤다. 예전에 라푼젤이라는 에니메이션 봤을때, 남여 주인공들이 배를 저어 호수 가운데로 가서 소망을 담은 등을 띄우는 걸 매우 감명깊게 보았었던게 기억나기도 한다. 이때문에 이맘때가 되면 윈도 바탕화면에서라도 등을 걸어두곤 한다.
아래 이미지들은 바이올린 이미지 만들다가 프롬프트 잘못줘서 나온 그림이긴 한데 꽤 맘에 들어 올려본다.