반응형

 

KVM, OpenStack, Kubernetes, OCP 등을 사용하다보면 VM에서 또는 Container 내부에서 CPU를 Pinning하거나 NUMA Node를 지정해야 할 경우가 있는데, 이런 CPU Pinning 설정/관리에 대한 내용을 기록해볼까~~~하고 마음을 먹었다. 그러나 너무 잘 작성한 블로그와 WebDocs가 있어서 그냥 Link만 걸어두기로 마음을 바꾸었다. :)

 

 

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/5/html/virtualization/ch33s08

 

33.8. Setting KVM processor affinities Red Hat Enterprise Linux 5 | Red Hat Customer Portal

The Red Hat Customer Portal delivers the knowledge, expertise, and guidance available through your Red Hat subscription.

access.redhat.com

 

 

 

https://mhsamsal.wordpress.com/2020/05/12/how-to-perform-cpu-pinning-for-kvm-virtual-machines-and-docker-containers/

 

How to Perform CPU Pinning for KVM Virtual Machines and Docker Containers

Note: This post provides technical details for our paper “The Art of CPU-Pinning: Evaluating and Improving the Performance of Virtualization and Containerization Platforms” published in…

mhsamsal.wordpress.com

 

 

 

https://superuser.com/questions/1519358/qemu-kvm-cpu-pinning

 

QEMU/KVM cpu pinning

I have set up my VM with pci passthrough and now I am trying to set up cpupinning. How do I verify that it does in fact work? My config regarding cpu parameters: ... <vcpu placement="static">...

superuser.com

 

 

반응형

 

 

 

 

https://access.redhat.com/documentation/ko-kr/openshift_container_platform/4.6/html/networking/add-pod

 

11.7. SR-IOV 추가 네트워크에 pod 추가 OpenShift Container Platform 4.6 | Red Hat Customer Portal

The Red Hat Customer Portal delivers the knowledge, expertise, and guidance available through your Red Hat subscription.

access.redhat.com

 

 

 

https://dramasamy.medium.com/high-performance-containerized-applications-in-kubernetes-f494cef3f8e8

 

High-Performance Containerized Applications in Kubernetes

The Single Root I/O Virtualization (SR-IOV) specification is a standard for a type of PCI device assignment that can share a single device…

dramasamy.medium.com

 

반응형

 

 

구성 환경

 

Host OS: Ubuntu

Hypervisor: KVM

VM(Guest): CentOS, Ubuntu, CoreOS 등 (Linux 계열)

 

 

우선 아래의 Web Docs를 보고 설정 및 테스트해보고, 잘 동작하면 여기에 테스트한 내용을 기록할 예정이다.

 

https://help.ubuntu.com/community/KVM%20-%20Using%20Hugepages

 

KVM - Using Hugepages - Community Help Wiki

Introduction The computer memory is divided in pages. The standard page size on most systems is 4KB. To keep track on what information is stored in which page, the system uses a page table. Searching in this page table is (in computer terms) a time costly

help.ubuntu.com

 

 

블로그 작성자: sejong.jeonjo@gmail.com

 

반응형

 

 

Host OS가 Ubuntu 20.04이고, 이 Host에 KVM을 설치했다.

그리고 이 KVM에서 PCI passthrough를 사용하는 방법을 정리해봤다.

 

 

참고: 이론적인 내용은 아래 블로그가 아주 쉽게 설명하고 있다.

https://www.nepirity.com/blog/kvm-gpu-passthrough/

 

KVM 기반의 GPU Passthrough 환경 - 네피리티

KVM 기반의 GPU Passthrough 환경 KVM 기반의 Hypervisor 에서 하드웨어 장치를 직접 Virtual Machine에게 할당하는 PassThrough 를 소개하고 환경 설정 방법에 대해서 설명드리도록 하겠습니다. PCI Passthrough는 NIC,

www.nepirity.com

 

 

 

 

PCI passthrough 사용을 위한 Host OS 설정

 

PCI passthrough를 사용하기 위해 아래 명령과 같이 Host OS를 설정한다.

 

##
## Grub 설정
##

$  cat /etc/default/grub

... 중간 생략 ...

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_iommu=on intel_iommu=igfx_off iommu=pt vfio-pci.ids=8086:1572"

... 중간 생략 ...

$  reboot

...
...
...


##
## Host OS가 Booting 되면, 아래와 같이 PCI에 관한 로그를 확인한다. "iommu=pt" 설정 확인
##

$  dmesg | grep -i vfio
[    0.000000] Command line: BOOT_IMAGE=/vmlinuz-5.4.0-94-generic root=UUID=7824a9ea-e59b-4796-9e23-75e3d909a001 ro quiet splash intel_iommu=on intel_iommu=igfx_off iommu=pt vfio-pci.ids=8086:1572 vt.handoff=7
[    4.136218] Kernel command line: BOOT_IMAGE=/vmlinuz-5.4.0-94-generic root=UUID=7824a9ea-e59b-4796-9e23-75e3d909a001 ro quiet splash intel_iommu=on intel_iommu=igfx_off iommu=pt vfio-pci.ids=8086:1572 vt.handoff=7
[   10.734658] VFIO - User Level meta-driver version: 0.3
[   10.814142] vfio_pci: add [8086:1572[ffffffff:ffffffff]] class 0x000000/00000000

...
...
...


$  lspci -k

... 중간 생략 ...

12:00.0 Ethernet controller: Intel Corporation Ethernet Controller X710 for 10GbE SFP+ (rev 02)
        Subsystem: Hewlett-Packard Company Ethernet 10Gb 2-port 562SFP+ Adapter
        Kernel driver in use: vfio-pci
        Kernel modules: i40e
12:00.1 Ethernet controller: Intel Corporation Ethernet Controller X710 for 10GbE SFP+ (rev 02)
        Subsystem: Hewlett-Packard Company Ethernet 10Gb 562SFP+ Adapter
        Kernel driver in use: vfio-pci
        Kernel modules: i40e

... 중간 생략 ...

$

 

 

PCI passthrough 사용을 위한 KVM 설정

 

##
## PCI passthrough할 NIC이 x710 드라이버를 사용한다고 가정하고
## 아래 설정 절차를 진행했다.
##

$  lspci | grep -i x710
12:00.0 Ethernet controller: Intel Corporation Ethernet Controller X710 for 10GbE SFP+ (rev 02)
12:00.1 Ethernet controller: Intel Corporation Ethernet Controller X710 for 10GbE SFP+ (rev 02)
af:00.0 Ethernet controller: Intel Corporation Ethernet Controller X710 for 10GbE SFP+ (rev 02)
af:00.1 Ethernet controller: Intel Corporation Ethernet Controller X710 for 10GbE SFP+ (rev 02)
$

##
## 위 출력된 내용 중에서 왼쪽 컬럼의 
##  12:00.0 
##  12:00.1
##  af:00.0
##  af:00.1
## 이 값을 이용하여 아래와 같이 KVM이 관리하는 device list를 확인한다.
##
##  참고:
##    nodedev-list로 출력된 device들은 모든 VM에서 공유해서 사용하는 device이므로
##    특정 VM에서 PCI device를 독점적으로 점유하려면, 아래 device를 KVM에서 detach하고
##    특정 VM의 HW에 아래 PCI device를 추가해주어야 PCI passthrough 효과를 얻을 수 있다.
##

$  virsh nodedev-list | grep 12_00
pci_0000_12_00_0
pci_0000_12_00_1
$  virsh nodedev-list | grep af_00
pci_0000_af_00_0
pci_0000_af_00_1
$

##
## PCI 슬롯 번호로 host에 등록된 PCI장비의 이름을 확인후 이 이름을 바탕으로 device 상제 정보를 확인한다.
## 아래 출력 내용 중에서 bus, slot, function 번호 확인 => KVM에서 VM의 device 추가할 때 필요하다.
##



root@bmt:~# virsh nodedev-dumpxml pci_0000_12_00_0
<device>
  <name>pci_0000_12_00_0</name>
  <path>/sys/devices/pci0000:11/0000:11:00.0/0000:12:00.0</path>
  <parent>pci_0000_11_00_0</parent>
  <driver>
    <name>vfio-pci</name>
  </driver>
  <capability type='pci'>
    <class>0x020000</class>
    <domain>0</domain>
    <bus>18</bus>
    <slot>0</slot>
    <function>0</function>
    <product id='0x1572'>Ethernet Controller X710 for 10GbE SFP+</product>
    <vendor id='0x8086'>Intel Corporation</vendor>
    <capability type='virt_functions' maxCount='64'/>
    <iommuGroup number='38'>
      <address domain='0x0000' bus='0x12' slot='0x00' function='0x0'/>
    </iommuGroup>
    <numa node='0'/>
    <pci-express>
      <link validity='cap' port='0' speed='8' width='8'/>
      <link validity='sta' speed='8' width='8'/>
    </pci-express>
  </capability>
</device>


root@bmt:~# virsh nodedev-dumpxml pci_0000_12_00_1
<device>
  <name>pci_0000_12_00_1</name>
  <path>/sys/devices/pci0000:11/0000:11:00.0/0000:12:00.1</path>
  <parent>pci_0000_11_00_0</parent>
  <driver>
    <name>vfio-pci</name>
  </driver>
  <capability type='pci'>
    <class>0x020000</class>
    <domain>0</domain>
    <bus>18</bus>
    <slot>0</slot>
    <function>1</function>
    <product id='0x1572'>Ethernet Controller X710 for 10GbE SFP+</product>
    <vendor id='0x8086'>Intel Corporation</vendor>
    <capability type='virt_functions' maxCount='64'/>
    <iommuGroup number='39'>
      <address domain='0x0000' bus='0x12' slot='0x00' function='0x1'/>
    </iommuGroup>
    <numa node='0'/>
    <pci-express>
      <link validity='cap' port='0' speed='8' width='8'/>
      <link validity='sta' speed='8' width='8'/>
    </pci-express>
  </capability>
</device>


root@bmt:~# virsh nodedev-dumpxml pci_0000_af_00_0
<device>
  <name>pci_0000_af_00_0</name>
  <path>/sys/devices/pci0000:ae/0000:ae:00.0/0000:af:00.0</path>
  <parent>pci_0000_ae_00_0</parent>
  <driver>
    <name>vfio-pci</name>
  </driver>
  <capability type='pci'>
    <class>0x020000</class>
    <domain>0</domain>
    <bus>175</bus>
    <slot>0</slot>
    <function>0</function>
    <product id='0x1572'>Ethernet Controller X710 for 10GbE SFP+</product>
    <vendor id='0x8086'>Intel Corporation</vendor>
    <capability type='virt_functions' maxCount='64'/>
    <iommuGroup number='151'>
      <address domain='0x0000' bus='0xaf' slot='0x00' function='0x0'/>
    </iommuGroup>
    <pci-express>
      <link validity='cap' port='0' speed='8' width='8'/>
      <link validity='sta' speed='8' width='8'/>
    </pci-express>
  </capability>
</device>


root@bmt:~# virsh nodedev-dumpxml pci_0000_af_00_1
<device>
  <name>pci_0000_af_00_1</name>
  <path>/sys/devices/pci0000:ae/0000:ae:00.0/0000:af:00.1</path>
  <parent>pci_0000_ae_00_0</parent>
  <driver>
    <name>vfio-pci</name>
  </driver>
  <capability type='pci'>
    <class>0x020000</class>
    <domain>0</domain>
    <bus>175</bus>
    <slot>0</slot>
    <function>1</function>
    <product id='0x1572'>Ethernet Controller X710 for 10GbE SFP+</product>
    <vendor id='0x8086'>Intel Corporation</vendor>
    <capability type='virt_functions' maxCount='64'/>
    <iommuGroup number='152'>
      <address domain='0x0000' bus='0xaf' slot='0x00' function='0x1'/>
    </iommuGroup>
    <pci-express>
      <link validity='cap' port='0' speed='8' width='8'/>
      <link validity='sta' speed='8' width='8'/>
    </pci-express>
  </capability>
</device>


##
## Host에서 위의 PCI Device를 detach한다.
##   참고: Host에 Attach된 nodedev는 VM에 Mount가 불가능하여 Detach해야 한다.
##        즉, 특정 VM에서만 위 PCI 장치를 전용해서 사용해야 하기 때문에
##        다수의 VM이 위 PCI 장비를 공유하지 못하도록 싹을 뽑아 버린다고 생각하면 된다.
##

$  virsh nodedev-detach pci_0000_12_00_0
Device pci_0000_12_00_0 detached

$  virsh nodedev-detach pci_0000_12_00_1
Device pci_0000_12_00_1 detached

 

위와 같이 KVM에서 Host 머신의 PCI 장치를 Detach했으면, 아래 KVM Virtual Manager 화면에서

특정 Virtual Machine 의 설정 화면을 열어본다.

그리고 이 Virtual Machine에 PCI Device를 추가한다. (아래 화면의 설정 순서를 따라할 것!!!) 

 

 

KVM Virt-Manager 에서 특정 VM의 HW 설정

 

위 설정 화면에서 [Finish] 버튼을 누르면, 아래 화면처럼 새로 추가한 PCI 장치 정보를 볼 수 있다.

 

 

VM의 HW 목록 및 설정 정보를 확인

 

 

 

위와 같이 Virtual Machine이 설정된 후에 VM 내부에서는 SR-IOV 구성까지 해야 NIC에 여러 VF를 생성하고, Application Process가 VF를 사용할 수 있을 것이다. (이후 과정에 나중에 테스트하면서 다시 기록할 생각이다) 

 

 

반응형

 

 

sftp 명령을 이용하여 Server와 PC(Client) 간에 파일을 전송하는 방식을 주로 사용하지만,

가끔 Linux 서버에 SFTP 서버 데몬이 구동되어 있지 않거나 ssh 터미널만 접속한 상태에서 즉시 파일을 전송할 때는 rz, sz 같은 zmodem을 사용하면 편하다.

(1990년 대, 하이텔 또는 나우누리 또는 천리안 같은 PC 통신을 사용한 사람이라면 대충 zmodem에 대한 느낌이 팍~ 올거다)

 

 

 

Mac OS에 rz sz 모뎀 프로그램 설치하기

 

##
## zmodel(즉, rz와 sz)를 사용하기 위해서는 xcode 개발자 도구가 필요하다.
## 따라서 아래와 같이 xcode를 설치한다.
##

$  xcode-select --install
xcode-select: note: install requested for command line developer tools

##
## lrzsz 프로그램 설치하기
##

$  brew install lrzsz

##
## rz, sz 명령을 수행했을 때, iTerm2를 Triggering할 수 있도록 
## Shell Script를 만든다.
## ( 이미 다른 사람이 친절하게 iTerm2 Triggering 스크립트를 만들었다. 
##   그냥 아래 설명처럼 Script 파일을 복사해서 사용하면 된다. )
##

$  git clone https://github.com/robberphex/iTerm2-zmodem.git

$  sudo  cp iterm2-*-zmodem.sh /usr/local/bin/

 

 

 

Iterm2 터미널 Trigger 기능 설정

 

아래 화면처럼 Triggers 설정 항목에 rz, sz 명령에 관한 Trigger 정보를 추가한다.

 

Default Profile에 Triggers 기능 추가하기

 

iTerm2 터미널의 RZ, SZ 명령에 대한 Trigger 정보 추가

 

 

위 과정까지 따라했다면, 설치와 설정 작업은 끝이다.

 

 

 

실제로 파일을 전송해보자 !!!

 

Linux 서버에 SSH 접속해서 아래처럼 명령을 수행해보자.

그러면 자동으로 Finder 창이 열릴 것이고, test-img.jpg를 저장할 폴더를 선택해준다.

그러면 알아서 파일이 내 PC(즉, 맥북)에 전송될 것이다.

 

 

 

 

 

Troubleshooting  (문제, 오동작 해결하기)

 

위 설명을 따라서 설치하면 대부분 rz, sz 명령은 잘 동작한다.

그런데 만약 rz, sz 명령을 수행했는데, 제대로 파일이 전송되지 않는다면 아래와 같이 rz, sz 명령의 경로가 올바른지 한번 확인하고 명령의 경로만 잘 설명해주면 된다.

 

$  sudo  cat  /usr/local/bin/iterm2-recv-zmodem.sh

#!/bin/bash
# Author: Matt Mastracci (matthew@mastracci.com)
# AppleScript from http://stackoverflow.com/questions/4309087/cancel-button-on-osascript-in-a-bash-script
# licensed under cc-wiki with attribution required
# Remainder of script public domain

osascript -e 'tell application "iTerm2" to version' > /dev/null 2>&1 && NAME=iTerm2 || NAME=iTerm
if [[ $NAME = "iTerm" ]]; then
    FILE=$(osascript -e 'tell application "iTerm" to activate' -e 'tell application "iTerm" to set thefile to choose folder with prompt "Choose a folder to place received files in"' -e "do shell script (\"echo \"&(quoted form of POSIX path of thefile as Unicode text)&\"\")")
else
    FILE=$(osascript -e 'tell application "iTerm2" to activate' -e 'tell application "iTerm2" to set thefile to choose folder with prompt "Choose a folder to place received files in"' -e "do shell script (\"echo \"&(quoted form of POSIX path of thefile as Unicode text)&\"\")")
fi

if [[ $FILE = "" ]]; then
    echo Cancelled.
    # Send ZModem cancel
    echo -e \\x18\\x18\\x18\\x18\\x18
    sleep 1
    echo
    echo \# Cancelled transfer
else
    cd "$FILE"
##
## NOTE : 본인 Mac PC에 설치한 rz, sz 명령의 위치가 /usr/local/bin 인지 /opt/homebrew/bin 인지
##        확인하고, 아래 예제처럼 올바르게 경로를 설정해주어야 한다.
##
#   /usr/local/bin/rz --rename --escape --binary --bufsize 4096
    /opt/homebrew/bin/rz --rename --escape --binary --bufsize 4096
    sleep 1
    echo
    echo
    echo \# Sent \-\> $FILE
fi

 

 

반응형

 

Netcat(nc) TCP, UDP를 통해 Peer(Client/Server) 연결하고, 데이터를 읽고 쓰는 유틸리티 프로그램이다.

 

대부분 개발자, 운영자가 아래와 같은 목적으로 NC 명령을 사용할 것이다.

 

1)  두 장비(Network Node) 간에 IP Network이 정상인지 확인하거나

2)  중간에 방화벽이 있다면, 방화벽 정책이 적용되었는지 직접 TCP, UDP 트래픽을 테스트하기 위해서 NC를 사용한다.

3)  서버 또는 클라이언트 한쪽만 개발(구현)한 뒤에 Peer를 시뮬레이션하기 위해서...  (즉, 시뮬레이터 만들기 귀찮아서 ㅋㅋ) 

 

 

 

설치

 

##
## Mac OS 에 설치하는 경우
##

$  brew install netcat


##
## Ubuntu 에 설치하는 경우
##

$  apt install -y netcat


##
## CentOS, Redhat 에 설치하는 경우
##

$  yum install -y nc

 

 

 

사용 방법 / 예제

 

장황하게 설명하는 것보다는 아래 화면 캡처 하나가 훨씬 이해하기 좋을 듯~~~

그냥 아래 화면처럼 따라하면 테스트가 잘 된다.

 

##
## Netcat Server
##

$  nc  -l  -p 9090


##
## Netcat Client
##

$  nc  10.10.5.3  9090

이것은 테스트 메시지이다. (enter key)
...
...
... 이런 식으로 메시지를 타이핑하면서 테스트한다 ...
...
...

^C

$

 

 

게시물 작성자: sejong.jeonjo@gmail.com

 

반응형

 

평생 C 언어, Go 언어로 Server Side 프로그램만 개발했던 나에게 새로운 과제가 생겼다.

Web Front End, Back End 개발 ~~~

 

밥벌이로 Web 프로그래밍을 한 것이 2003년이 마지막인데, 지난 19년 동안 개발 환경이 많이 변했겠지.

어렵풋한 기억에 PHP, Java Beans, JSP로 Web 서비스를 개발했었던 것 같다.

 


그냥 한 귀로 듣고 넘어가는 나의 푸념...
솔직히 2000년 ~ 2003년 사이에 내가 했던 개발 내용이나 방법보다는 자정까지 사무실에서 졸린 눈을 비비며, 고생한 흔적만 몸에 남은 듯...
그래서 웹 서비스 개발에 대한 나의 부정적 느낌이 여전히 남아 있다. ㅠㅠ
20년이 지나도록 그 느낌은 지워지지 않고 있다.
나에게 다시는 웹과 관련한 개발이 없을 줄 알았는데 ~~~ 이렇게 새로운 도전 과제가 주어졌다.

 

첫 삽은 PatternFly를 리서치하고, 내가 만들려는 Web App에 적절한지부터 파악해야겠다.

 

 

 

PatternFly가 뭐 하기 위해 만들어진 도구인가?

 

PatternFly Homepage에 소개된 글을 요약해보면, 아래 문장이 될 듯~~~

 


PatternFly는 
Application(앱) 전반에 걸쳐 UI 통일성을 유지하기 위한 Open Source Web UI Desgin 시스템.
그리고
Web UI 디자이너와 개발자가 협업할 수 있도록 Guidance와 Standard(표준) 업무 절차를 제공.

 

 

 

PatternFly 구조

Components

Web Page에 보여질 Text, Image(Picture), Table  같은 것.

 

Layouts

Screen의 가로, 세로 크기가 변하더라도 Web Page의 components가 Screen에 잘 보여지도록 components를 재배치한다.

 

Demos

PatternFly는 여러 Components를 조합해서 Layouts을 디자인하는 예제(Demo)를 제공한다.

유용한 Demo 코드를 제공하므로 이런 Demo 코드를 이용하면 적은 노력으로 Web UI를 만들 수 있다.

 

 

 

PatternFly 디자인 가이드라인

Style Guideline

컬러, 글씨체(폰트), 여백 같은 디자인 체계에 대한 가이드라인을 제시한다.

Usage and Behavior

Navigation, dashboards, form 같은 디자인 패턴에 대한 가이드라인을 제시한다.

UX Writing

 

 

 

 

 

 

 

 

반응형

 

맥북 프로 (Macbook Pro) 2015 Mid를 사용한지 어언 6년이 흘렀다.  (그리고 3개월 전에는 맥북 M1도 구입해서 사용 중이다.)

맥북 프로의 기본 Display 화질과 내가 가지고 있는 30~50만원대 HDMI 모니터들과 화질 차이가 많이 나서 그 동안 HDMI로 모니터를 연결하지 않고 맥북 프로 화면만 사용해서 업무를 했다. (화면이 좁아서 답답한 느낌이 있지만, 두 모니터의 화질 차이가 커서 생기는 불편함보다는 괜찮다)

그렇다고 80만원이 넘는 LG 4K 모니터를 구입하기는 부담스러웠다.

 

 

그런데, 30만원 짜리 4K 모니터가 나오다니 !!!

 

 올해 봄부터 4K 해상도에 USB-C 영상 입력과 DP 영상 입력이 지원되는 30만원 짜리 모니터가 나왔다.

 

특히 잇섭님이 주연테크 V28UE 모니터가 가성비 좋다고 소개해서 출시하고 몇달 지나지 않아서 생상된 물량 모두가 팔리는 일까지 생겼다.

 

나도 원래 지난 2021년 8월에 이 V28UE 모니터를 구입하려고 했었는데, 품절이 한달 이상 지속되면서 마음을 바꾸었다.

거의 동일한 스펙(Spec), 그리고 거의 비슷한 가격으로 CrossOver 회사도 2890CU IPS TYPE-C 모니터를 출시한 것이다.

 

2021년 8월에 주문할 때만해도 블로그, YouTube에 사용자 리뷰가 없어서 크로스오버 2890CU 를 구입하는 것이 좋은 판단인지 헷갈렸는데 거의 5개월 정도 사용한 지금은 아주 만족하면서 사용하고 있다.

 

 

얼마나 만족하냐면...

 

처음 크로스오버 2890CU 를 구입하고 사무실에서 1개월 정도 사용한 뒤에, 에서 사용할 모니터를 크로스오버 2890CU 로 또 구입했다.

즉, 한 달만에 크로스오버 2890CU 모니터를 2개 구입했다.

그리고 회사에서 내 옆자리에서 일하는 동료도 내 모니터의 화질을 확인하고 일주일 뒤에 크로스오버 2890CU 모니터를 구입했다.

즉, 가격과 품질 모두 합리적이다.

 

처음 3개월 정도는 사용하면서 하루에 3회 정도 화면이 깜빡하면서 2~3초간 꺼졌다가 다시 켜지는 현상이 있었는데, MacOS Monterey로 업그레이드한 이후로 이 현상은 한번도 발생하지 않았다.  모니터 문제가 아니고 MacOS 자체적인 오류였던 것이다.

 

모니터에 100 ~ 200만원을 써도 아깝지 않은 사람이라면, 더 고급스러운 4K 레티나(Retina) 모니터를 구입하는 것이 좋겠지만, 나처럼 평범한 직장인(개발자) 또는 가정에서 사용할 모니터라면 크로스오버 2890CU 모니터가 괜찮은 선택이다.

 

특히 썬더볼트 to DP가 되는 구형 맥북 프로(2015년형)이나 최근 USB-C 영상 출력이 되는 맥북은 이 모니터와 궁합이 좋다.

 

맥북과 모니터가 USB-C 케이블로 연결되니까, 따로 전원 케이블을 연결하지 않아도 되고 USB-C 케이블 하나로 전원 + 영상 신호 전송(PD 지원)이 되니까 책상이 깔끔해졌다.

 

 

(제품 광고하는 거 아니에요~   나는 크로스오버 회사와 아무런 관계가 없어요.)

+ Recent posts