Uploaded image for project: 'Spark'
  1. Spark
  2. SPARK-33206

Spark Shuffle Index Cache calculates memory usage wrong

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 2.4.0, 3.0.1
    • 3.1.3, 3.0.4, 3.3.0, 3.2.2
    • Shuffle
    • None

    Description

      SPARK-21501 changed the spark shuffle index service to be based on memory instead of the number of files.

      Unfortunately, there's a problem with the calculation which is based on size information provided by `ShuffleIndexInformation`.

      It is based purely on the file size of the cached file on disk.

      We're running in OOMs with very small index files (byte size ~16 bytes) but the overhead of the ShuffleIndexInformation around this is much larger (e.g. 184 bytes, see screenshot). We need to take this into account and should probably add a fixed overhead of somewhere between 152 and 180 bytes according to my tests. I'm not 100% sure what the correct number is and it'll also depend on the architecture etc. so we can't be exact anyway.

      If we do that we can maybe get rid of the size field in ShuffleIndexInformation to save a few more bytes per entry.

      In effect this means that for small files we use up about 70-100 times as much memory as we intend to. Our NodeManagers OOM with 4GB and more of indexShuffleCache.

       

       

      Attachments

        1. image001(1).png
          49 kB
          Lars Francke

        Activity

          People

            attilapiros Attila Zsolt Piros
            larsfrancke Lars Francke
            Votes:
            0 Vote for this issue
            Watchers:
            7 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: