Cứu mạng người
(folklore.org)- Macintosh được xem là một máy tính nhanh nhờ vi xử lý 68000, nhưng trong sử dụng thực tế, đĩa mềm lại trở thành nút thắt cổ chai về tốc độ
- Điểm mà Steve Jobs đặc biệt xem là vấn đề là thời gian khởi động kéo dài từ lúc bật nguồn, kiểm tra bộ nhớ, khởi tạo hệ điều hành đến tải Finder
- Jobs gây áp lực với Larry Kenyon rằng nếu giảm được 10 giây khởi động thì 5 triệu người dùng sẽ tiết kiệm 50 triệu giây mỗi ngày, và trong 1 năm sẽ tương đương với sinh mạng của hàng chục người
- Cả nhóm vốn đã có động lực cải thiện hiệu năng phần mềm, nên chưa rõ phép tính này thực sự tác động đến mức nào
- Kết quả là vài tháng sau, nhóm Macintosh đã rút ngắn hơn 10 giây thời gian khởi động, và kiểu thuyết phục của Jobs trở thành một giai thoại hài hước
Nút thắt cổ chai của Macintosh là đĩa mềm
- Nhóm Macintosh cho rằng đây là một máy tính nhanh vì vi xử lý 68000 trên thực tế nhanh gấp 10 lần Apple II
- Nhưng do RAM bị giới hạn, máy phải thường xuyên đọc dữ liệu từ đĩa mềm, và ở phần này thì không nhanh hơn Apple II
- Khi các ứng dụng thực tế bắt đầu chạy, đĩa mềm lộ ra là nút thắt cổ chai cốt lõi
Steve Jobs ám ảnh với thời gian khởi động
- Một trong những điều khiến Jobs khó chịu nhất là thời gian khởi động khi mới bật Mac
- Kiểm tra bộ nhớ
- Khởi tạo hệ điều hành
- Tải Finder
- Quá trình này có thể mất vài phút, hoặc thậm chí lâu hơn
- Jobs yêu cầu Larry Kenyon, người phụ trách trình điều khiển đĩa và hệ thống tệp, phải làm cho Macintosh khởi động nhanh hơn vì nó quá chậm
Phép tính “giảm 10 giây là cứu mạng người”
- Larry Kenyon cố giải thích những điểm có thể cải thiện, nhưng Jobs không quan tâm đến phần giải thích đó
- Jobs giả định rằng vài năm sau sẽ có 5 triệu người khởi động Macintosh ít nhất một lần mỗi ngày
- Nếu giảm 10 giây thời gian khởi động thì sẽ tiết kiệm 50 triệu giây mỗi ngày, và trong 1 năm sẽ tương đương với sinh mạng của hàng chục người
- Vì vậy, ông nói rằng việc làm cho khởi động nhanh hơn 10 giây có giá trị giống như “cứu sống hàng chục người”
Kết quả thực tế
- Vì cả nhóm vốn cũng muốn làm phần mềm nhanh nhất có thể, nên không chắc cách thuyết phục của Jobs đã tạo ảnh hưởng lớn đến đâu
- Dù vậy, cách ông thuyết phục đã được đón nhận khá hài hước trong nội bộ nhóm
- Trong vài tháng sau đó, thời gian khởi động của Macintosh thực sự đã được rút ngắn hơn 10 giây
1 bình luận
Các ý kiến trên Hacker News
Theo câu chuyện nghe từ một kỹ sư lâu năm của Apple, trong khảo sát người dùng thời MacOS 8.x, phàn nàn lớn nhất là thời gian khởi động
Khi đó trung bình mất khoảng 45 giây; hệ thống đã hỗ trợ sleep, nên họ hỏi vì sao mọi người lại quan tâm đến thời gian boot
Hóa ra người dùng không chỉ khởi động lại một lần mỗi ngày hay mỗi tuần, mà thường xuyên reboot vì tính thiếu ổn định; ở bản phát hành mới, họ có cải thiện việc khởi động, nhưng tập trung nhiều hơn vào việc làm hệ điều hành ổn định
Kết quả là phàn nàn về thời gian khởi động biến mất, không phải vì nó nhanh vượt trội, mà vì người dùng ít phải reboot hơn; bài học là cần hiểu không chỉ khách hàng yêu cầu gì, mà còn vì sao họ yêu cầu điều đó
Quy tắc patch cũng không rõ ràng; chẳng hạn có thể có đường mã cấp phát bộ nhớ bên trong một patch cho system call, mà đó là việc không được làm vì trình quản lý bộ nhớ không reentrant
Thêm vào đó là mã được build bằng trình biên dịch C thời ấy, và các công cụ ngăn ghi bộ nhớ ngoài phạm vi cũng rất hạn chế
MacOS 8 cũng đưa vào bảo vệ bộ nhớ rất hạn chế, nhưng trong thực tế chẳng giúp được bao nhiêu; trong ngữ cảnh này, câu chuyện nói về năng lực và ý chí của tổ chức trong việc hợp lý hóa vấn đề
Vấn đề này suýt nữa đã giết chết Apple về mặt kinh doanh
Một người bạn lần đầu cho vợ xem Mac OS X rồi định shutdown, thì vợ anh ấy nhăn mặt nói: “Điều em thích ở Mac chính là nó tắt ngay lập tức”, và anh bạn đáp: “Vậy chắc em phải tìm thứ khác để thích ở Mac OS rồi”
Nếu hiện giờ máy nhanh hơn, chỉ cần chờ vài năm. Các nhà phát triển sẽ để lọt đủ mức suy giảm hiệu năng để nó lại tăng lên mức đó
Tôi nghĩ mình từng nghe câu chuyện này rồi quên mất. Khi phụ trách đội cài đặt, tải xuống và patch ở Blizzard, tôi thường nói với đội rằng “10 triệu người sẽ tải xuống và cài bản vá này; nếu chúng ta khiến họ mất thêm 1 phút, tức là ta đang tiêu tốn thêm một phần tuổi thọ con người”
Nghe phóng đại và hơi sến, nhưng nó giúp thúc đẩy cải tiến
Chỉ số quan trọng hơn mà tôi thúc đẩy là tốc độ ánh sáng. Thời còn cài từ DVD, tốc độ quay của đĩa là tốc độ ánh sáng của môi trường đó, nên việc cài đặt phải tiến gần đến tốc độ ấy nhất có thể
Ta phải liên tục cải thiện tốc độ làm việc cho đến khi chạm giới hạn vật lý; thời gian rất quý và không thể có thêm
Khi triển khai một đợt cải thiện hiệu năng hạ tầng lớn, điều cốt lõi không phải bản thân tốc độ hay chi phí tiết kiệm được, mà là CO2 trong khí quyển giảm đi, và thời gian của con người được phân tán trên hàng triệu người sẽ được dùng vào việc khác thay vì chờ máy tính phản hồi
Chúng ta không phải bác sĩ cứu mạng từng cá nhân, nhưng có thể trả lại cho con người một phần cuộc sống. Một số phần mềm được hàng trăm triệu, hàng tỷ người dùng, nên một thay đổi nhỏ cũng có thể tiết kiệm lượng thời gian tương đương nhiều “đời người”
Nếu nhớ không nhầm, hệ thống phân phối patch dựa trên torrent của WoW và các game tương tự thật sự được làm rất tốt, đặc biệt đáng nể trong một ngành chịu áp lực lớn
Tôi đã thấy nhiều kỹ sư có vẻ làm việc chăm chỉ, nhưng họ hầu như không dành thời gian để hiểu phần cứng mình đang vận hành và những gì có thể làm trên đó
Trong các cuộc thảo luận về hiệu năng, tôi nghe quá nhiều câu như “chậm” hoặc “ổn rồi”, nhưng thường họ lại hoàn toàn bỏ qua máy nền tảng bên dưới và các giới hạn khả dĩ
Tính năng tôi thích nhất là hỗ trợ tải dần. WoW là một game khổng lồ, nhưng vẫn có thể bắt đầu chơi chỉ với một phần asset; game hạ xuống để hiển thị placeholder và asset chất lượng thấp, hoặc thậm chí bỏ qua hẳn một số khu vực
Ngay cả khi cài mới hoàn toàn, bạn vẫn có thể chơi trong vài phút. Người chơi nhìn chung coi đó là hiển nhiên, nhưng tôi biết ơn vì chắc hẳn đã có một khối lượng công sức khổng lồ để thay bánh cho đoàn tàu đang chạy và truyền tải lượng dữ liệu khổng lồ với hiệu năng cao mà không gặp vấn đề lớn
Tôi tự hỏi liệu đó có thật sự là cách dùng thời gian tốt hơn đến mức ấy so với việc chờ tải xuống không
Steve Jobs luôn bịa ra điều gì đó để thúc đẩy và đẩy mọi người tiến lên, theo kiểu cái gọi là trường bóp méo thực tại
Theo Mike Slade, khoảng năm 1990, Jobs đã cố lôi kéo ông từ Microsoft sang NeXT; khi đó Microsoft đang đứng trước cú hit lớn Windows 95, còn NeXT thì chật vật với việc bán máy tính
Jobs nói với Slade rằng nếu ở Seattle thì tài năng của ông sẽ bị lãng phí, còn Silicon Valley là trung tâm của sự phấn khích và hoạt động, nơi ông có thể nở rộ
Rồi ông mô tả Palo Alto là một “nơi đặc biệt” giống Florence thời Phục hưng của Ý, và ứng khẩu hùng biện rằng nơi đó đầy ắp tài năng đến mức khi đi trên phố, khoảnh khắc này có thể gặp một học giả, khoảnh khắc sau đã gặp một phi hành gia
Slade nói ông bị choáng ngợp trước lời mô tả đó và quyết định chuyển đến Palo Alto; nhưng một năm sau, khi ăn tối cùng vợ tại Il Fornaio, một nhà hàng Ý dạng chuỗi trên University Avenue ở Palo Alto, ông nhìn mặt sau thực đơn và thấy có đúng câu chuyện với dòng chữ “Palo Alto giống Florence thời Phục hưng…”
Rốt cuộc, Jobs đã thuyết phục người ta bằng một câu trên thực đơn của chuỗi nhà hàng mà ông thích, lại còn là một câu quảng cáo chẳng hay ho gì; Slade hồi tưởng rằng ông ấy đúng là “một kẻ khoác lác không biết xấu hổ”
https://www.cultofmac.com/573753/how-jobs-poached-a-microsof...
Vài năm trước khi làm việc ở đó, điều tôi nhớ nhất trên các con phố Palo Alto chỉ là mùi nước tiểu nồng nặc bốc lên từ đường hầm dưới ga Caltrain
Thật khó tin rằng một kỹ sư chuyên nghiệp thông minh, đang làm ở một trong những công ty lớn nhất và danh giá nhất thế giới lúc bấy giờ, lại bỏ việc và chuyển cả cuộc sống sang bang khác chỉ vì nghe nhà tuyển dụng tiềm năng nói “tin tôi đi, tuyệt lắm”
Để đưa ra quyết định như vậy, ít nhất có lẽ người đó cũng đã bay tới xem căn hộ, ghé thăm văn phòng, v.v. Câu chuyện thì hay thật, nhưng chắc chắn còn nhiều bối cảnh hơn
Đó là kiểu nhà hàng chỉ đến khi mọi lựa chọn khác đã kín chỗ hoặc đã quá muộn để lái xe đi xa hơn
Đó là trung tâm của thế giới điện toán, và việc tình cờ gặp những con người đáng kinh ngạc ở những nơi như Fry’s, nhà hàng hay quán bar là chuyện có thật
Có vẻ người trẻ ngày nay không thực sự hiểu rằng rất nhiều thứ xoay quanh công nghệ hiện nay bắt nguồn từ South Bay và Peninsula của thập niên 90
Lập trình viên và kỹ sư nên áp dụng lối suy nghĩ này một cách tổng thể. Tổng thời gian chờ đợi phần mềm chậm là khổng lồ, và nhiều nhóm phát triển hơn cần đặt hiệu năng ở mức ưu tiên cao hơn
Ta không có ý thức cộng dồn toàn bộ thời gian chờ đợi vì phần mềm và dịch vụ chậm, nhưng trong khoảnh khắc đó, nó vô thức khiến ta thấy khó chịu và bực bội như thể hệ thống đang chống lại mình
Chỉ cần nghĩ đến nó một chút một cách có ý thức, ta sẽ khinh thường những kỹ sư và trưởng dự án đã tin rằng thứ họ làm ra như vậy là đủ tốt để phát hành
Xét đến năng lực xử lý của máy tính hiện đại, việc phải chờ hàng trăm mili giây cho một yêu cầu tầm thường, hoặc chờ lâu hơn nhiều cho một yêu cầu hơi phức tạp, là bằng chứng cho thấy sự cẩu thả nghiêm trọng của lập trình viên
Tối thứ Năm, bạn gái nhờ tôi dọn dẹp một chiếc MacBook cũ; chỉ có vài bước như hủy liên kết tài khoản gắn với phần cứng, tìm cách gỡ khóa firmware mà có lẽ trước đây tôi đã thiết lập, cài mới, cập nhật
Nhưng một vài bước hoặc lần khởi động lại mất lâu hơn vài giây, và công việc cứ liên tục dụ tôi bỏ sang việc khác, nên cuối cùng mất 6 tháng
Sau nhiều lần gián đoạn, tôi đặt nó trên bàn cạnh bàn phím và hoàn thành trong tổng cộng 30 phút trải qua 6 giờ, như vậy đã là một chiến thắng
Nếu ai đó trói tay tôi vào chiếc laptop thì chắc đã xong nhanh hơn, nhưng nỗi khổ khi bị buộc phải nhìn màn hình trống, thanh tiến trình và biểu tượng xoay thì không thể tưởng tượng nổi
Những trường hợp như tác vụ batch chạy lâu là ngoại lệ
Máy tính bình thường từng có thể cold boot trong vòng 30 giây từ ổ cứng đĩa quay 5400rpm, nên tôi tự hỏi vì sao với NVMe SSD hiện đại lại không thể khởi động trong vòng 1 giây
Windows 95, bao gồm hầu hết tính năng, có dung lượng cài đặt khoảng 50MB, còn Windows 2000 nằm gọn trong một đĩa CD cài đặt
Hiện nay bộ cài Windows 10 còn không nhét vừa một DVD một lớp, và cũng phải từ bỏ việc cài bằng USB FAT32. Một số UEFI cũ vẫn chưa xử lý được exFAT
Theo cảm nhận, chiếc máy nhanh nhất tôi từng dùng là máy dual Pentium 3 866, Rambus, đĩa 15k U320 SCSI khởi động XP, gần như thần giao cách cảm
Có vẻ đây là vấn đề cũ: Windows càng tích thêm nhiều thứ lặt vặt thì thời gian khởi động càng dài
Phông chữ hệ thống trước đây cũng chỉ khoảng 200 ký tự, còn giờ chứa hàng chục nghìn ký tự
Ngoại suy điều đó sang mọi thứ khác thì khá rõ là có nhiều thứ phải tải hơn rất nhiều
Đủ nhanh để tôi không bận tâm
Nếu phải chờ máy tính thì nghĩa là nó chưa đủ nhanh
Lập luận của Steve ở đây được dùng rộng rãi trong ngành, và kiểu “nếu thất bại thì là kẻ giết người” gần như là tống tiền cảm xúc, nhưng dù sao vẫn là một lập luận kinh điển
Rất dễ đổ trách nhiệm của phần mềm chậm cho người dùng, hoặc đổ cho PM hay tổ chức thúc ép tính năng và tốc độ phát triển hơn là tốc độ sản phẩm
Khẩu hiệu của Steve ở đây có nghĩa là hiệu năng phần mềm có tác động thực tế đến đời sống hằng ngày, và chỉ ra điều đó không phải là tống tiền cảm xúc
Sau khi iPad ra mắt, Jobs được kể là đã cầm iPad bước vào cuộc họp của nhóm Mac, đánh thức iPad và nó bật lên ngay lập tức
Tiếp đó ông đánh thức Mac thì nó mất thời gian để thoát khỏi chế độ ngủ, và Jobs đã hỏi đại loại “tại sao cái này không làm được như thế?”
Nếu không có iPad để cho thấy điều đó là khả thi, hẳn đã tiếp tục có những tranh luận kiểu tốc độ bộ nhớ và tốc độ đĩa, còn việc ngủ/thức nhanh hơn của Mac đã tạo áp lực để Windows cũng làm tốt hơn
Nếu lập luận này đúng, tôi tự hỏi vô số animation trong UI ngày nay thì sao
Ngoài việc làm cho vài chục lần đầu trông đẹp mắt, trong nhiều trường hợp chúng chỉ lãng phí thời gian
Trình chuyển ứng dụng trên điện thoại tôi dùng mất 0,5–1 giây nếu có animation, nhưng nếu tắt animation thì gần như chuyển ngay lập tức
Nếu màn hình lập tức đổi sang một bố cục hoàn toàn khác, mắt và não sẽ mất thời gian xử lý; còn nếu các phần tử được nội suy và di chuyển sang vị trí mới, thời gian xử lý đó được rút xuống bằng thời lượng animation
Thường là khoảng 0,25 giây, không phải 0,5 hay 1 giây
Với những người mê tốc độ hoặc người dùng nâng cao thì có thể gây cản trở nên cứ tắt đi, nhưng người dùng mục tiêu là người dùng trung bình, không phải những người đã thuộc lòng từng ngóc ngách UI bằng trí nhớ cơ bắp
Một số animation có thể chồng lên các tác vụ mất thời gian, khiến người dùng cảm thấy có phản hồi trong khi vẫn phải chờ. iOS trông như làm vậy khi chuyển sang một ứng dụng đã bị swap ra đĩa; vì có thời gian tải nên animation bù đắp một phần độ trễ
Nếu không có animation, người dùng có thể nghĩ mình chưa thực hiện thao tác đúng và cố nhập lại, dẫn đến bực bội
Một số animation cần thiết để giữ cảm giác định hướng của người dùng trong luồng UI. Ví dụ animation thu nhỏ đưa cửa sổ về biểu tượng cần bấm khi muốn khôi phục, và giúp phân biệt giữa đóng và thu nhỏ
Một số animation cần thiết để cung cấp phản hồi phù hợp trong khi vẫn giữ tính đáp ứng. Khi cuộn danh sách trên màn hình cảm ứng, nếu không có animation lò xo ở cuối danh sách thì người dùng không có cách nào biết đó là cuối danh sách hay màn hình cảm ứng đã bị đơ
UI hệ thống của console game và menu của một số game có vẻ đặc biệt tệ ở điểm này
Một animation ngắn 200ms ở 25fps chỉ có 5 khung hình nên trông giật cục và thô
Làm thành 1000ms thì trông mượt và đẹp, nhưng dùng thì tuyệt vọng
Có thể là một giải pháp không được ưa chuộng, nhưng hãy dùng iPhone. Trình chuyển ứng dụng hoạt động nhanh theo chuyển động ngón tay, và không gặp vấn đề gì trong việc duy trì 60fps ổn định
Không chậm đến mức không dùng được nhưng cảm nhận rõ ràng; hóa ra tốc độ animation mặc định quá thấp
Tăng lên gấp đôi thì mọi thứ có cảm giác tốt hơn gấp 1.000 lần
Windows 11 mất khoảng 12 phút để boot từ HDD. Cứ tưởng tượng đang cố boot từ FDD là được
Sau khi cài Windows 11, nếu chờ cài tất cả bản cập nhật trên HDD thì mất khoảng 8 ngày
https://www.youtube.com/watch?v=MpNagBwWlNk
Cách đây không lâu, khi cố tạo hệ thống dual boot, tôi đã làm hỏng phân vùng của chiếc iMac 2017 có Fusion Drive, và từ đó Mac chậm đi
Từ lúc khởi động đến khi dùng tạm ổn có lẽ mất khoảng 5 phút, dù sao cũng khá lâu
Cuối tuần trước tôi chán cảnh chậm chạp nên tìm thử và thấy có lệnh
diskutil resetFusion0 để đưa phân vùng về mặc địnhChạy lệnh này rồi cài lại OS thì iMac lại khá nhanh. Không tuyệt vời, nhưng tốt hơn trước rất nhiều
Điều rút ra là dual boot trên Fusion Drive là ý tưởng tệ
Thường thì máy Windows 10 của tôi reboot vài tháng một lần, và bộ phận IT của chúng tôi chuẩn bị PC Windows trong khoảng một giờ
Nghe như có gì đó rất sai, dù tôi không phải chuyên gia IT
Tôi nhớ trước đây từng đọc một bài viết và thảo luận về InterBase (nay là FireBase). Nội dung nói rằng mô hình lưu trữ và phục hồi tự chữa lành rất quan trọng trong một số kịch bản nhất định, và khi đó có trích dẫn như sau
“AFATDS gồm 935.000 dòng mã Ada chạy trên các máy trạm HP RISC và Light Weight Computer Units của Lục quân,” John Williams của Magnavox Electronic Systems Company, nhà thầu chính, cho biết
“Chúng tôi cần một cơ sở dữ liệu duy nhất có thể mở rộng và hoạt động trên khắp các nền tảng Unix và PC. Sản phẩm phải được cài đặt nhanh chóng, đồng thời cung cấp tính sẵn sàng cao mà không chiếm độc quyền tài nguyên hệ thống”
“Hỗ trợ ra quyết định kiểu này đòi hỏi một kiến trúc mô-đun, linh hoạt, hỗ trợ cả xử lý phân tán lẫn cơ sở dữ liệu phân tán. Vì vậy chúng tôi đã chọn InterBase. Nó có hiệu năng vượt trội so với các sản phẩm cạnh tranh và thuyết phục chúng tôi rằng có thể tin cậy được ngay cả trong tình huống sống còn”
Bối cảnh chính xác của cuộc thảo luận là: ở một số xe tăng, khi bắn pháo chính có thể xảy ra sự kiện EMP bên trong khiến hệ thống khởi động lại, nên cần thời gian khởi động lại và phục hồi cực nhanh để có thể bắn tiếp
Tôi tự hỏi nếu Steve biết sẽ có bao nhiêu triệu cuộc đời bị tiêu biến vì cứ cuộn mãi trên một tấm kính nhỏ thì sẽ thế nào