code: def get_mem_usage(**kwargs):
      
      try:
          con_mem_data_list = con._client.get_memory(
              session=kwargs["con"]._session, memory_level=kwargs["mem_type"]
          )
          usedram = 0
          freeram = 0
          for con_mem_data in con_mem_data_list:
              page_size = con_mem_data.page_size
              node_memory_data_list = con_mem_data.node_memory_data
              for node_memory_data in node_memory_data_list:
                  ram = node_memory_data.num_pages * page_size
                  is_free = node_memory_data.is_free
                  if is_free:
                      freeram += ram
                  else:
                      usedram += ram
          totalallocated = usedram + freeram
          if totalallocated > 0:
              totalallocated = round(totalallocated / 1024 / 1024, 1)
              usedram = round(usedram / 1024 / 1024, 1)
              freeram = round(freeram / 1024 / 1024, 1)
          ramusage = {}
          ramusage["usedram"] = usedram
          ramusage["freeram"] = freeram
          ramusage["totalallocated"] = totalallocated
          ramusage["errormessage"] = ""
      except Exception as e:
          errormessage = "Get memory failed with error: " + str(e)
          logging.error(errormessage)
          ramusage["errormessage"] = errormessage
      return ramusage
docs: Calculates memory statistics from mapd_server _client.get_memory call
  
        Kwargs:
          con(class 'pymapd.connection.Connection'): Mapd connection
          mem_type(str): [gpu, cpu] Type of memory to gather metrics for
  
        Returns:
          ramusage(dict):::
            usedram(float): Amount of memory (in MB) used
            freeram(float): Amount of memory (in MB) free
            totalallocated(float): Total amount of memory (in MB) allocated
            errormessage(str): Error if returned by get_memory call
            rawdata(list): Raw data returned from get_memory call