Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 415701
Collapse All | Expand All

(-)torque-3.0.4/src/resmom/linux/cpuset.c.orig (-22 / +32 lines)
Lines 37-42 Link Here
37
extern int num_numa_nodes;
37
extern int num_numa_nodes;
38
#endif /* NUMA_SUPPORT */
38
#endif /* NUMA_SUPPORT */
39
39
40
#include <linux/version.h>
41
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,0)
42
#define CPUSET_PREFIX "cpuset."
43
#else
44
#define CPUSET_PREFIX ""
45
#endif
46
40
extern long system_ncpus;
47
extern long system_ncpus;
41
48
42
/* FIXME: TODO:  TTORQUECPUSET_PATH, enabling cpuset support, and correct error
49
/* FIXME: TODO:  TTORQUECPUSET_PATH, enabling cpuset support, and correct error
Lines 442-448 Link Here
442
449
443
  /* make sure cpusets are available */
450
  /* make sure cpusets are available */
444
451
445
  sprintf(path, "%s/cpus", TROOTCPUSET_PATH);
452
  sprintf(path, "%s/%scpus", TROOTCPUSET_PATH, CPUSET_PREFIX);
446
453
447
  if (lstat(path, &statbuf) != 0)
454
  if (lstat(path, &statbuf) != 0)
448
    {
455
    {
Lines 480-487 Link Here
480
487
481
    /* load cpus in root set */
488
    /* load cpus in root set */
482
489
483
    sprintf(path, "%s/cpus",
490
    sprintf(path, "%s/%scpus",
484
            TROOTCPUSET_PATH);
491
            TROOTCPUSET_PATH, CPUSET_PREFIX);
485
492
486
    fp = fopen(path, "r");
493
    fp = fopen(path, "r");
487
494
Lines 519-526 Link Here
519
526
520
      /* NOTE:  load 'boot' set */
527
      /* NOTE:  load 'boot' set */
521
528
522
      sprintf(path, "%s/boot/cpus",
529
      sprintf(path, "%s/boot/%scpus",
523
              TROOTCPUSET_PATH);
530
              TROOTCPUSET_PATH, CPUSET_PREFIX);
524
531
525
      fp = fopen(path, "r");
532
      fp = fopen(path, "r");
526
533
Lines 554-561 Link Here
554
561
555
      /* create new TORQUE cpus set */
562
      /* create new TORQUE cpus set */
556
563
557
      sprintf(path, "%s/cpus",
564
      sprintf(path, "%s/%scpus",
558
              TTORQUECPUSET_PATH);
565
              TTORQUECPUSET_PATH, CPUSET_PREFIX);
559
566
560
      fp = fopen(path, "w");
567
      fp = fopen(path, "w");
561
568
Lines 588-595 Link Here
588
595
589
    /* add all mems to torqueset */
596
    /* add all mems to torqueset */
590
597
591
    sprintf(path, "%s/mems",
598
    sprintf(path, "%s/%smems",
592
            TROOTCPUSET_PATH);
599
            TROOTCPUSET_PATH, CPUSET_PREFIX);
593
600
594
    fp = fopen(path, "r");
601
    fp = fopen(path, "r");
595
602
Lines 622-629 Link Here
622
629
623
      /* NOTE:  load 'boot' set */
630
      /* NOTE:  load 'boot' set */
624
631
625
      sprintf(path, "%s/boot/mems",
632
      sprintf(path, "%s/boot/%smems",
626
              TROOTCPUSET_PATH);
633
              TROOTCPUSET_PATH, CPUSET_PREFIX);
627
634
628
      fp = fopen(path, "r");
635
      fp = fopen(path, "r");
629
636
Lines 657-664 Link Here
657
664
658
      /* create new TORQUE mems set */
665
      /* create new TORQUE mems set */
659
666
660
      sprintf(path, "%s/mems",
667
      sprintf(path, "%s/%smems",
661
              TTORQUECPUSET_PATH);
668
              TTORQUECPUSET_PATH, CPUSET_PREFIX);
662
669
663
      fp = fopen(path, "w");
670
      fp = fopen(path, "w");
664
671
Lines 1015-1021 Link Here
1015
  /* don't "else return(FAILURE);" because the directory doesn't necessarily exist */
1022
  /* don't "else return(FAILURE);" because the directory doesn't necessarily exist */
1016
1023
1017
  /* create the directory and copy the relevant memory data */
1024
  /* create the directory and copy the relevant memory data */
1018
  snprintf(tmppath,sizeof(tmppath),"%s/mems",TTORQUECPUSET_PATH);
1025
  snprintf(tmppath,sizeof(tmppath),"%s/%smems",TTORQUECPUSET_PATH, CPUSET_PREFIX);
1019
  if (access(TTORQUECPUSET_PATH, F_OK) == 0)
1026
  if (access(TTORQUECPUSET_PATH, F_OK) == 0)
1020
    {
1027
    {
1021
1028
Lines 1040-1046 Link Here
1040
        }
1047
        }
1041
1048
1042
      fclose(fd);
1049
      fclose(fd);
1043
      snprintf(tmppath,sizeof(tmppath),"%s/mems",path);
1050
      snprintf(tmppath,sizeof(tmppath),"%s/%smems",path, CPUSET_PREFIX);
1044
      fd = fopen(tmppath, "w");
1051
      fd = fopen(tmppath, "w");
1045
      if (fd)
1052
      if (fd)
1046
        {
1053
        {
Lines 1088-1093 Link Here
1088
  vnodent *np;
1095
  vnodent *np;
1089
  int      j;
1096
  int      j;
1090
  int      rc = SUCCESS;
1097
  int      rc = SUCCESS;
1098
  int      tmppath_len;
1091
1099
1092
  char    *id = "create_vnodesets";
1100
  char    *id = "create_vnodesets";
1093
  char     cpusbuf[MAXPATHLEN+1];
1101
  char     cpusbuf[MAXPATHLEN+1];
Lines 1105-1111 Link Here
1105
      mkdir(tmppath, 0755);
1113
      mkdir(tmppath, 0755);
1106
      chmod(tmppath, 00755);
1114
      chmod(tmppath, 00755);
1107
      sprintf(tasksbuf, "%d", np->vn_index);
1115
      sprintf(tasksbuf, "%d", np->vn_index);
1108
      strcat(tmppath, "/cpus");
1116
      tmppath_len=strlen(tmppath);
1117
      snprintf(tmppath+tmppath_len, sizeof(tmppath)-tmppath_len, "/%scpus", CPUSET_PREFIX);
1109
      sprintf(log_buffer, "TASKSET: %s cpus %s\n", tmppath, tasksbuf);
1118
      sprintf(log_buffer, "TASKSET: %s cpus %s\n", tmppath, tasksbuf);
1110
      log_event(PBSEVENT_SYSTEM, 
1119
      log_event(PBSEVENT_SYSTEM, 
1111
        PBS_EVENTCLASS_SERVER,
1120
        PBS_EVENTCLASS_SERVER,
Lines 1129-1135 Link Here
1129
      memset(tasksbuf, '\0', sizeof(tasksbuf));
1138
      memset(tasksbuf, '\0', sizeof(tasksbuf));
1130
1139
1131
      /* add all mems to torqueset - membuf has info stored */
1140
      /* add all mems to torqueset - membuf has info stored */
1132
      sprintf(tmppath, "%s/%d/%s",path,np->vn_node,"/mems");
1141
      sprintf(tmppath, "%s/%d/%smems",path,np->vn_node,CPUSET_PREFIX);
1133
      fd = fopen(tmppath, "w");
1142
      fd = fopen(tmppath, "w");
1134
1143
1135
      if (fd)
1144
      if (fd)
Lines 1200-1206 Link Here
1200
  get_cpu_string(pjob,cpusbuf);
1209
  get_cpu_string(pjob,cpusbuf);
1201
#endif  /* end NUMA_SUPPORT */
1210
#endif  /* end NUMA_SUPPORT */
1202
1211
1203
  snprintf(tmppath,sizeof(tmppath),"%s/cpus",path);
1212
  snprintf(tmppath,sizeof(tmppath),"%s/%scpus",path, CPUSET_PREFIX);
1204
1213
1205
  sprintf(log_buffer, "CPUSET: %s job %s path %s\n", cpusbuf,
1214
  sprintf(log_buffer, "CPUSET: %s job %s path %s\n", cpusbuf,
1206
          pjob->ji_qs.ji_jobid, tmppath);
1215
          pjob->ji_qs.ji_jobid, tmppath);
Lines 1231-1237 Link Here
1231
1240
1232
    fclose(fd);
1241
    fclose(fd);
1233
#ifdef NUMA_SUPPORT
1242
#ifdef NUMA_SUPPORT
1234
    snprintf(tmppath,sizeof(tmppath),"%s/mems",path);
1243
    snprintf(tmppath,sizeof(tmppath),"%s/%smems",path, CPUSET_PREFIX);
1235
    fd = fopen(tmppath, "w");
1244
    fd = fopen(tmppath, "w");
1236
    if (fd)
1245
    if (fd)
1237
      {
1246
      {
Lines 1705-1711 Link Here
1705
1714
1706
  if (LOGLEVEL >= 6)
1715
  if (LOGLEVEL >= 6)
1707
    {
1716
    {
1708
    sprintf(log_buffer, "cpuset %s/memory_pressure=%d", path, rc);
1717
    sprintf(log_buffer, "cpuset %s/%smemory_pressure=%d", path, CPUSET_PREFIX, rc);
1709
    log_record(PBSEVENT_DEBUG, 0, id, log_buffer);
1718
    log_record(PBSEVENT_DEBUG, 0, id, log_buffer);
1710
    }
1719
    }
1711
1720
Lines 1714-1722 Link Here
1714
  /* Construct the name of the cpuset's memory_pressure file */
1723
  /* Construct the name of the cpuset's memory_pressure file */
1715
1724
1716
  if (cpusetname[0] == '/')
1725
  if (cpusetname[0] == '/')
1717
    snprintf(path, sizeof(path), "%s/memory_pressure", cpusetname);
1726
    snprintf(path, sizeof(path), "%s/%smemory_pressure", cpusetname, CPUSET_PREFIX);
1718
  else
1727
  else
1719
    snprintf(path, sizeof(path), "%s/%s/memory_pressure", TTORQUECPUSET_PATH, cpusetname);
1728
    snprintf(path, sizeof(path), "%s/%s/%smemory_pressure", TTORQUECPUSET_PATH,
1729
             cpusetname, CPUSET_PREFIX);
1720
1730
1721
  /* Open, read, close */
1731
  /* Open, read, close */
1722
1732

Return to bug 415701