คืนวันที่ 13 มิถุนายน เครื่อง Mac 16GB ที่รันทุกอย่างของเราเริ่มอาการแปลก หน้าจอค้างเป็นช่วงๆ สลับกับเมาส์หมุน พอเปิดดูตัวเลขก็เจอภาพที่อธิบายทุกอย่าง RAM เต็ม ระบบบีบอัดหน่วยความจำไปอีก 4.1GB แล้วยังต้องไปพึ่ง swap (พื้นที่บนดิสก์ที่ระบบใช้แทนหน่วยความจำตอน RAM ไม่พอ) อีก 3.8GB ตัววาดหน้าจอของ macOS ถึงขั้นหมุนค้างจนระบบต้องเข้ามาจัดการ
บนเครื่องตัวนั้นมี agent ทำงานอยู่ทั้งชุด daemon ที่ต้องออนไลน์ตลอด memory service ที่เก็บความจำระยะยาว โมเดล embedding สำหรับค้นความจำ งานวิเคราะห์การลงทุน บวกกับทุกแอปที่เราเปิดใช้เอง ความคิดแรกที่ผุดขึ้นตรงไปที่ใบสั่งซื้อ: ถึงเวลาซื้อเครื่อง 64GB แล้วสินะ ราคาประเมินตอนนั้นราวๆ $2,000 หรือเกือบเจ็ดหมื่นบาท
แต่ก่อนกดสั่ง มีคำถามหนึ่งที่ยังไม่มีใครตอบได้: ที่เห็นว่ากินกัน 8GB น่ะ เป็นของ agent จริงๆ กี่ GB เพราะตัวเลขบนเครื่อง dev มันแยกไม่ออกว่าอะไรคืองาน อะไรคือเครื่องมือ อะไรคือหน้าจอ บทความนี้คือการบ้านที่เราทำเพื่อตอบคำถามนั้น ด้วยวิธีที่ถูกที่สุดเท่าที่คิดออก: เช่าเครื่องมาวัด
ช่วงที่ 1เช่าก่อนซื้อ: ค่าวัดที่ถูกที่สุดคือค่าเช่าเดือนแรก
โจทย์ของเราไม่ใช่ "หาเครื่องแรงขึ้น" แต่คือ "หาว่างานต้องการเท่าไหร่กันแน่" สองโจทย์นี้ให้คำตอบคนละราคา โจทย์แรกจบที่ใบสั่งซื้อเจ็ดหมื่น โจทย์ที่สองเริ่มได้ด้วยเงินหลักร้อยบาท
วิธีที่เราใช้: เช่า VPS สเปคเดียวกับเครื่องปัจจุบัน (8 vCPU / RAM 16GB) แล้วย้ายเฉพาะส่วนที่ต้องออนไลน์ตลอดขึ้นไป ที่เหลือทุกอย่างอยู่ที่เดิม เจ้าที่เลือกคือ Hetzner ผู้ให้บริการเยอรมันที่ราคาต่อสเปคถูกจนต้องดูสองรอบ แผน cx43 (8 vCPU / 16GB / ดิสก์ 160GB) อยู่ที่ $13.99 ต่อเดือน คิดเงินตามชั่วโมงที่เปิดจริง แปลว่าถ้าวัดแล้วไม่เวิร์คก็ลบเครื่องทิ้ง จ่ายแค่เศษของเดือน ต้นทุนของการทดลองทั้งก้อนจบในหลักร้อยบาท
ตอนกดเช่ามีเรื่องเดียวที่ต้องยอม: ศูนย์ข้อมูลของ Hetzner มีเฉพาะยุโรปกับสหรัฐฯ ไม่มีเอเชีย ping จากไทยไปอยู่ราว 250-300ms ฟังดูช้า แต่กับงานประเภท agent ที่ทำงานฝั่งออก คือ bot ยิงข้อความออก ตื่นตามตารางเวลา ตอบ webhook ตัวเลขนี้ไม่มีผลอะไรที่รู้สึกได้ ที่จะมีผลคือกรณีเอาไปเป็นเซิร์ฟเวอร์รับผู้ใช้ในไทยตรงๆ แต่นั่นไม่ใช่งานของเครื่องตัวนี้
ช่วงที่ 2ตัวเลขบนเครื่องเช่าเล่าคนละเรื่องกับบนเครื่อง dev
พองานชุดเดียวกันไปอยู่บนเครื่อง headless ที่ไม่มีอะไรอื่นเลย ตัวเลขแรกที่เห็นก็ตอบคำถามเจ็ดหมื่นบาททันที: RAM ตอนพักอยู่ที่ 2.7GB จากที่เคยเชื่อว่างานชุดนี้กินกัน 8GB
เรายังไม่เชื่อตัวเลขพักเฉยๆ เลยอัดงานใส่: ยิงคำขอ embedding เข้าโมเดล bge-m3 พร้อมกัน 24 สายต่อเนื่อง 75 วินาที ให้เครื่องเหนื่อยที่สุดเท่าที่งานจริงจะเป็นได้ ผลคือ RAM พุ่งสุดที่ 3.4GB หรือ 21% ของเครื่อง หน่วยความจำที่เหลือว่างไม่เคยต่ำกว่า 78% และค่า PSI ฝั่ง memory นิ่งอยู่ที่ 0.00 ตลอดการทดสอบ แปลเป็นภาษาคนคือไม่มีสักวินาทีที่งานต้องหยุดรอหน่วยความจำ
แล้ว 8GB บนเครื่อง Mac มาจากไหน? คำตอบคือมันไม่ใช่ของ agent มาตั้งแต่แรก ตัวเลขนั้นคือ agent บวก Docker Desktop บวกเบราว์เซอร์ บวกระบบ desktop ของ macOS ทั้งชุดที่วาดหน้าจอ จัดการแอนิเมชัน และแบกทุกแอปที่เราเปิดทิ้งไว้ เรียกรวมๆ ว่าภาษีหน้าจอ ที่งานตัวจริงไม่ได้ใช้แต่เครื่องต้องจ่าย พอลบภาษีก้อนนี้ออก งานตัวจริงเหลือแค่ 3GB
บทเรียนข้อแรกของเรื่องนี้เลยไม่เกี่ยวกับ Hetzner: อย่ากำหนดสเปคเครื่อง production จากตัวเลขที่อ่านบนเครื่อง dev เพราะบนนั้นงานกับสภาพแวดล้อมปนกันจนแยกไม่ออก ต้องแยกงานออกมาวัดเดี่ยวๆ ก่อน แล้วค่อยคุยเรื่องซื้ออะไร
ช่วงที่ 3ตัวที่หมดก่อนคือ CPU ไม่ใช่ RAM
การทดสอบเดียวกันนั้นแถมคำตอบที่สองที่เราไม่ได้ตั้งใจถาม ระหว่างที่ RAM ยังว่างเกินสามในสี่ โมเดล embedding อัด CPU เต็ม 100% ทั้ง 8 คอร์ แล้วเริ่มทิ้งงาน จากคำขอ 106 ชุดที่ยิงเข้าไป เครื่องรับไม่ทันไป 57 ชุด
คอขวดของเครื่องตัวนี้จึงไม่ใช่หน่วยความจำอย่างที่กลัวกันมาตลอด ตัวจำกัดจริงคือแกนประมวลผล เหตุผลก็ตรงไปตรงมา งานคิดหนักของ agent ยุคนี้ส่งออกไปให้โมเดลใหญ่ผ่าน API อยู่แล้ว สิ่งที่เหลืออยู่บนเครื่องคืองานต่อท่อ: รับข้อความ ค้นความจำ แปลง embedding เรียก API แล้วส่งต่อ งานพวกนี้กิน RAM น้อยมาก แต่พอมีจังหวะที่ทุกอย่างเข้าพร้อมกัน CPU คือด่านแรกที่เต็ม
ข้อสรุปเชิงปฏิบัติ: ถ้าจะเผื่อเงินให้ VPS สำหรับ agent เผื่อไปที่ vCPU ก่อน RAM 16GB สำหรับงานแบบนี้คือเหลือเฟือระดับใช้ไม่ถึงหนึ่งในสี่ ส่วน 8 vCPU คือจุดที่งาน burst เริ่มชนเพดานให้เห็นแล้ว
ช่วงที่ 4ราคาวันนี้ Hetzner เทียบ DigitalOcean เทียบ Fly.io
ตารางนี้เทียบราคาเครื่องระดับเดียวกัน (RAM 16GB สาย shared CPU) ตรวจสดจากหน้าราคาทางการวันที่ 4 ก.ค. 2026 ราคา Hetzner คือราคาที่เราเช่าจริงเมื่อมิถุนายน 2026
| เจ้า | สเปค | ต่อเดือน | เหมาะกับ |
|---|---|---|---|
| Hetzner cx43 | 8 vCPU / 16GB / 160GB | $13.99 | งาน agent เฝ้ายาว 24/7 ที่เน้นถูกและทน ศูนย์ข้อมูลยุโรป/สหรัฐฯ เท่านั้น จุดที่เราใช้อยู่ |
| DigitalOcean Basic | 8 vCPU / 16GB / 320GB | $96 | งานที่ต้องการศูนย์ข้อมูลใกล้ผู้ใช้ (มีสิงคโปร์) ดิสก์ให้เยอะกว่าสองเท่า |
| Fly.io shared-cpu-8x | 8 vCPU / 16GB | $88.88 | งานสาย deploy-ใกล้-ผู้ใช้หลายภูมิภาค คิดเงินตามเวลาที่เครื่องรันจริง |
| ซื้อเครื่อง 64GB เอง | เครื่องตั้งโต๊ะ | ~$2,000 จ่ายครั้งเดียว | เมื่อวัดเพดานการใช้จริงแล้วเท่านั้น และมีงานที่ต้องอยู่บนเครื่องตัวเอง (ช่วงถัดไป) |
สองคอลัมน์กลางคือประเด็นของตาราง RAM เท่ากัน ราคาต่างกันเกือบเจ็ดเท่า ความต่างนี้ไม่ใช่ของฟรี Hetzner แลกมาด้วยทำเลที่ไม่มีเอเชียกับบริการที่ต้องช่วยตัวเองเป็นหลัก ส่วน DigitalOcean กับ Fly ขายทำเลและความสะดวกที่ Hetzner ไม่มี คำถามที่ถูกจึงไม่ใช่เจ้าไหนดีสุด แต่คืองานของเราต้องจ่ายให้ทำเลไหม ถ้า agent ทำงานฝั่งออกอย่างเดียว คำตอบก็ชัดว่าไม่ต้อง
ส่วนแถวสุดท้ายอยู่ในตารางเพื่อเตือนเราเอง เครื่อง $2,000 ไม่ใช่ตัวเลือกที่ผิด แต่มันควรเป็นการตัดสินใจที่เกิดหลังการวัด ไม่ใช่เกิดจากความตกใจตอนเห็นหน้าจอค้าง
ช่วงที่ 5งานแบบไหนอยู่บ้านต่อ งานแบบไหนขึ้น VPS
ถึงตรงนี้อาจสงสัยว่าทำไมไม่ย้ายทุกอย่างขึ้น VPS ให้จบเรื่อง คำตอบที่เราไปเจอระหว่างทางคือ เส้นแบ่งไม่ใช่สเปคเครื่อง แต่คือวิธี login ของเครื่องมือคิด
เครื่องมือ AI ที่คิดหนักให้เรามีสองแบบตามวิธียืนยันตัวตน แบบแรกคือบริการเหมาจ่ายรายเดือนที่ผูกกับการ login บนเครื่องของเราเอง ใช้ได้ทุกที่ที่เรานั่งอยู่ แต่ไม่ได้ออกแบบมาให้ไปรันค้างบนเครื่องเช่าที่ไหนก็ไม่รู้ แบบที่สองคือ API แบบ key จ่ายตามใช้ ใครถือ key ที่ไหนก็เรียกได้ งานสองแบบนี้เลยแยกบ้านกันเองโดยธรรมชาติ
- อยู่เครื่องตัวเอง: งานคิดหนักที่ใช้บริการเหมาจ่าย งานที่เราต้องนั่งคุมอยู่แล้ว และทุกอย่างที่เสียบสายกับอุปกรณ์จริง พวกนี้ย้ายไม่ได้ต่อให้อยากย้าย
- ขึ้น VPS: daemon ที่ต้องออนไลน์ตลอด memory service ตัวทำ embedding งานตื่นตามตารางเวลา ตัวตอบ webhook และงานที่เรียกโมเดลผ่าน API key ทั้งหมด
พอแบ่งตามเส้นนี้ ปัญหาต้นเรื่องก็คลี่ของมันเอง เครื่อง Mac ไม่ต้องอัปเป็น 64GB เพราะงานเฝ้าที่เคยเบียดอยู่ย้ายออกไปแล้ว ส่วน VPS ตัวเล็กก็ทำหน้าที่เดียวที่มันเก่งที่สุด: เป็นบ้านที่ไฟไม่เคยดับให้กับงานที่ห้ามหลับ เครื่องสองตัวคุยกันผ่านช่องทางเข้ารหัส เรื่องนั้นเราเขียนแยกไว้แล้วอีกบทความ (อยู่ท้ายเรื่องนี้)
ช่วงที่ 6สามสัปดาห์ผ่านไป บิลจริงมาแล้ว
ตอนเขียนบทความนี้ เครื่องตัวนั้นเปิดต่อเนื่องมา 20 วันโดยไม่มี restart เช็คสดก่อนลงมือเขียน RAM ใช้อยู่ 2.6GB นิ่งกว่าตอนวัดวันแรกด้วยซ้ำ และบิลใบแรกจาก Hetzner ก็มาถึงแล้ว: $9.78 สำหรับเศษเดือนมิถุนายนที่คิดตามชั่วโมงจริง ราวสามร้อยกว่าบาทสำหรับสามสัปดาห์ของการรู้ความจริงที่เกือบแลกด้วยเงินเจ็ดหมื่น
มีของแถมที่ไม่ได้ตั้งใจอีกข้อ ศูนย์ข้อมูลที่เครื่องอยู่คือเยอรมนี ข้อมูลความจำของ agent ทั้งหมดจึงนั่งอยู่ใต้กติกาคุ้มครองข้อมูลของยุโรป เข้มกว่าที่หลายเจ้าให้เป็นค่าเริ่มต้น สำหรับงานที่ความจำของ agent มีเรื่องส่วนตัวปนอยู่ นี่เป็นคุณสมบัติ ไม่ใช่แค่รายละเอียด
สรุปว่าเลือกยังไง ถ้าให้ตอบจากที่วัดมาทั้งหมด:
- agent เฝ้า 24/7 งานต่อท่อทั่วไป → VPS ตัวถูกที่ vCPU ไม่น้อยเกิน RAM 16GB เหลือเฟือ ถ้ารับเงื่อนไขทำเลยุโรปได้ Hetzner คือราคาที่เจ้าอื่นไม่เล่นด้วย
- ต้องรับผู้ใช้ในไทยหรือเอเชียแบบไวๆ → จ่ายค่าทำเลให้เจ้าที่มีศูนย์ข้อมูลสิงคโปร์ ความถูกของ Hetzner ช่วยอะไรไม่ได้ถ้า ping ทำร้ายผู้ใช้
- อยากรันโมเดลภาษาเอง → นั่นคือโจทย์ GPU คนละเรื่องกับเครื่องเฝ้างาน เราเขียนแยกไว้แล้วในเรื่องเช่า GPU (ท้ายบทความ)
- เครื่องมือคิดเป็นแบบเหมาจ่าย login → งานส่วนนั้นอยู่เครื่องตัวเอง ไม่ต้องฝืนย้าย
ก่อนจะจ่ายเจ็ดหมื่นให้เครื่องใหม่ ลองจ่ายสิบสี่เหรียญให้เดือนแรกของการวัดดูก่อน ตัวเลขที่วัดได้อาจเปลี่ยนใบสั่งซื้อทั้งใบ ของเราเปลี่ยนมาแล้ว
- ตัวเลข RAM / PSI / งานที่ถูกทิ้ง มาจาก log ที่เก็บด้วย sampler ของเราเอง (13-14 มิ.ย. 2026 บนเครื่องเช่าจริง) ส่วนตัวเลข 20 วัน / 2.6GB เช็คสดจากเครื่องวันที่ 4 ก.ค. 2026 ก่อนเขียน ตัวเลขบนฝั่ง Mac (compressor 4.1GB / swap 3.8GB) อ่านจากเครื่องจริงวันเกิดเหตุ 13 มิ.ย. 2026
- Hetzner Cloud pricing ราคา cx43 $13.99/เดือนคือราคาตอนเรา provision (มิ.ย. 2026) พร้อมใบแจ้งหนี้จริงงวดแรก 2 ก.ค. 2026 จำนวน $9.78 ราคาปัจจุบันตรวจได้จากหน้านี้
- DigitalOcean droplet pricing ตรวจ 4 ก.ค. 2026: Basic 8 vCPU / 16GB / 320GB = $96/เดือน
- Fly.io pricing ตรวจ 4 ก.ค. 2026: shared-cpu-8x 16GB = $88.88/เดือน (ภูมิภาค Amsterdam ราคาต่างตามภูมิภาค)
- PSI (pressure stall information) เอกสาร Linux kernel ของตัววัดที่ใช้อ่านอาการรอหน่วยความจำ