---
# System prepended metadata

title: '[ML][測試] sklearn / pod & container 記憶體測試'
tags: [sklearn, python, ML, ML / sklearn]

---

[ML][測試] sklearn / pod & container 記憶體測試
===
###### tags: `ML / sklearn`
###### tags: `ML`, `sklearn`, `python`

<br>

[TOC]

<br>



## 測試案例：no_show_appointments (2021/01/28)
- ### 原始資料集：no_show_appointments
    - 原始資料集：110527筆
    - 訓練資料集：90000筆
    - 測試資料集：20527筆
- ### 目標資料集
    - 將「訓練資料集」放大 2000 倍來進行測試
        ```bash
        $ for i in {1..2000}; do cat train_x.csv >> train_x_times2000.csv; done
        ```
    - 訓練資料集：180000000筆（18000萬筆）（1.8億筆）
- ### 硬體設定
    [![](https://i.imgur.com/GvT3ZyG.png)](https://i.imgur.com/GvT3ZyG.png)
    由上而下，依序是
    - [11] V100-Network100G / 40 GiB
    - [02] No GPU / 40 GiB
    - [01] No GPU / 20 GiB
- ### Cloud Infra 記憶體使用狀況：
    - [11] V100-Network100G / 40 GiB
        - 配置 67346317312 Bytes = 67.34 GB
            > 記憶體仍然在長大
              雖然記憶體是配置 40GB
              但可能沒有設定 [memory limit](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/)
        - 使用 44313653248 Bytes = 44.31 GB
        - 2021/01/29 - 有觀察到：
            [![](https://i.imgur.com/8Rv1Aeq.png)](https://i.imgur.com/8Rv1Aeq.png)
            - 記憶體使用到 61 GB
            - 記憶體配置到 78.39 GB
            - 隨後使用量回到 46 GB，
                應該是演算法在計算過程，可能需要額外工作記憶體來儲存暫時資訊
    - [02] No GPU / 40 GiB
        - 配置 42946809856 Bytes = 42.95 GB
            > 記憶體沒有在長大
              過一陣子後可能系統發現超過 memory limit
              進而把它 kill 掉
        - 使用 42946359296 Bytes = 42.95 GB
        - 結果：OOMKilled
- ### ESC4000 記憶體使用狀況：
    ```
    $ docker stats
    CPU %    MEM USAGE / LIMIT     MEM %   NET I/O       BLOCK I/O           PIDS
    99.91%   46.26GiB / 377.9GiB   12.24%  2.56kB / 0B   58.9MB / 23.1MB     64
    ```
    - 記憶體使用最大情況
- ### 參考資料
    - [How to Handle Large CSV files with Pandas?](https://www.tutorialspoint.com/how-to-handle-large-csv-files-with-pandas)
    - [Checking kubernetes pod CPU and memory](https://stackoverflow.com/a/62717009/4359712)
