Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 5 additions & 7 deletions go-slang/src/integrationTests/basicMultiThread.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,8 @@ func foo(y int) {
`;

test.concurrent("should execute correctly", async () => {
let { log, state, getId, getPC, prog } = setUpMultiThreadedTest(progStr);
let { log, state, getId, getPC, prog, getMemory } =
setUpMultiThreadedTest(progStr);
const maxInstrExecutions = 2 * 10000;
const pcExecutionOrder: Record<string, number[]> = {};
const osState: Record<string, string[]> = {};
Expand Down Expand Up @@ -78,14 +79,11 @@ func foo(y int) {
console.dir(printLast(getId(), 100, 20));
throw e;
}

// const _memUsage = `${getMemory().getMemoryUsed()} / ${getMemory().getMemorySize()}`;
// const _memResidency = `${getMemory().getMemoryResidency()} / ${getMemory().getMemorySize()}`;
// console.dir({ i: pcExecutionOrder.length, _memUsage, _memResidency });
}

// console.dir(lastHundredInstr);
expect(Object.keys(log)).toHaveLength(1 + /* getFn */ 100 + /* foo */ 1);
expect(Object.keys(log)).toHaveLength(
1 + /* getFn */ 100 + /* foo */ 1 + /*GC*/ 1
);

const mainId = state.machineState.MAIN_ID;
const otherIdsAndPc = Object.keys(log)
Expand Down
5 changes: 2 additions & 3 deletions go-slang/src/integrationTests/basicSingleThread.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ func foo(y int) {

describe("basic single threaded program", () => {
it("should execute correctly", () => {
let { log, state, getPC, prog } = setUpTest(progStr);
let { log, state, getPC, prog, getMemory } = setUpTest(progStr);

const pcExecutionOrder: number[] = [];
const maxInstrExecutions = 2 * 1200;
Expand Down Expand Up @@ -74,11 +74,10 @@ describe("basic single threaded program", () => {
throw e;
}

// const _memUsage = `${getMemory().getMemoryUsed()} / ${getMemory().getMemorySize()}`;
// const _memUsage = `${getMemory().getMemoryAllocated()} / ${getMemory().getMemorySize()}`;
// const _memResidency = `${getMemory().getMemoryResidency()} / ${getMemory().getMemorySize()}`;
// console.dir({ i: pcExecutionOrder.length, _memUsage, _memResidency });
}

expect(log[state.mainThreadId]).toEqual([
"1",
"3",
Expand Down
2 changes: 1 addition & 1 deletion go-slang/src/integrationTests/channels.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ func main() {
// const _memResidency = `${getMemory().getMemoryResidency()} / ${getMemory().getMemorySize()}`;
// console.dir({ i: pcExecutionOrder.length, _memUsage, _memResidency });
}
expect(Object.keys(log)).toHaveLength(2);
expect(Object.keys(log)).toHaveLength(3);

let barId = Object.keys(log).filter(
(id) => id !== state.machineState.MAIN_ID
Expand Down
2 changes: 1 addition & 1 deletion go-slang/src/integrationTests/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { initializeVirtualMachine } from "../virtual_machine";
export const setUpTest = (progStr: string) => {
const log: Record<string, string[]> = {};
const prog = compileParsedProgram(parse(progStr));
let state = initializeVirtualMachine(prog, (2 ** 8) ** 2, (ctx, s) => {
let state = initializeVirtualMachine(prog, (2 ** 6) ** 2, (ctx, s) => {
const pushLog = (id: string, s: string) => {
if (!log[id]) log[id] = [];
log[id].push(s);
Expand Down
4 changes: 2 additions & 2 deletions go-slang/src/integrationTests/waitgroup.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ func main() {
// console.dir({ i: pcExecutionOrder.length, _memUsage, _memResidency });
}

expect(Object.keys(log)).toHaveLength(6);
expect(Object.keys(log)).toHaveLength(7);
const mainId = state.machineState.MAIN_ID;
// console.dir(printLast(mainId, 100, 20));

Expand Down Expand Up @@ -135,7 +135,7 @@ func main() {
// console.dir({ i: pcExecutionOrder.length, _memUsage, _memResidency });
}

expect(Object.keys(log)).toHaveLength(6);
expect(Object.keys(log)).toHaveLength(7);
const mainId = state.machineState.MAIN_ID;
// console.dir(printLast(mainId, 100, 20));

Expand Down
237 changes: 237 additions & 0 deletions scripts/memGraph.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,237 @@
import matplotlib.pyplot as plt

memUsages =[
177, 179, 179, 181, 184, 185, 186, 186, 188, 188, 190, 193,
194, 195, 195, 197, 197, 199, 202, 203, 204, 204, 206, 206,
208, 211, 212, 213, 213, 215, 215, 217, 220, 221, 222, 222,
224, 224, 226, 229, 230, 231, 231, 233, 233, 235, 238, 239,
240, 240, 242, 242, 244, 247, 248, 249, 249, 251, 251, 253,
256, 257, 258, 258, 260, 260, 262, 265, 266, 267, 267, 269,
269, 271, 274, 275, 276, 276, 278, 278, 280, 283, 284, 285,
285, 287, 287, 289, 292, 293, 294, 294, 296, 296, 298, 301,
302, 303, 303, 305, 305, 307, 310, 311, 312, 312, 314, 314,
316, 319, 320, 321, 321, 323, 323, 325, 328, 329, 330, 330,
332, 332, 334, 337, 338, 339, 339, 341, 341, 343, 346, 347,
348, 348, 350, 350, 352, 355, 356, 357, 357, 359, 359, 361,
364, 365, 366, 366, 368, 368, 370, 373, 374, 375, 375, 377,
377, 379, 382, 383, 384, 384, 386, 386, 388, 391, 392, 393,
393, 395, 395, 397, 400, 401, 402, 402, 404, 404, 406, 409,
410, 411, 411, 413, 413, 415, 418, 419, 420, 420, 422, 422,
424, 427, 428, 429, 429, 431, 431, 433, 436, 437, 438, 438,
440, 440, 442, 445, 446, 447, 447, 449, 449, 451, 454, 455,
456, 456, 458, 458, 460, 463, 464, 465, 465, 467, 467, 469,
472, 473, 474, 474, 476, 476, 478, 481, 482, 483, 483, 485,
485, 487, 490, 491, 492, 492, 502, 504, 504, 506, 506, 508,
511, 512, 513, 513, 515, 515, 517, 520, 521, 522, 522, 523,
547, 563, 565, 565, 567, 567, 569, 569, 571, 574, 575, 576,
576, 578, 578, 580, 583, 584, 585, 585, 587, 588, 589, 589,
590, 614, 615, 617, 618, 619, 619, 619, 619, 621, 622, 647,
657, 659, 660, 661, 663, 663, 665, 665, 666, 667, 669, 670,
671, 671, 672, 674, 675, 677, 677, 678, 679, 680, 705, 706,
706, 706, 706, 708, 709, 711, 712, 737, 371, 373, 374, 375,
377, 377, 379, 379, 380, 381, 383, 384, 385, 385, 386, 388,
389, 391, 391, 392, 393, 394, 419, 420, 420, 420, 420, 422,
423, 425, 426, 451, 461, 463, 464, 465, 467, 467, 469, 469,
470, 471, 473, 474, 475, 475, 476, 478, 479, 481, 481, 482,
483, 484, 509, 510, 510, 510, 510, 512, 513, 515, 516, 541,
551, 553, 554, 555, 557, 557, 559, 559, 560, 561, 563, 564,
565, 565, 566, 568, 569, 571, 571, 572, 573, 574, 599, 600,
600, 600, 600, 602, 603, 605, 606, 631, 641, 643, 644, 645,
647, 647, 649, 649, 650, 651, 653, 654, 655, 655, 656, 658,
659, 661, 661, 662, 663, 664, 689, 690, 690, 690, 690, 692,
693, 695, 696, 721, 511, 513, 514, 515, 517, 517, 519, 519,
520, 521, 523, 524, 525, 525, 526, 528, 529, 531, 531, 532,
533, 534, 559, 560, 560, 560, 560, 562, 563, 565, 566, 591,
601, 603, 604, 605, 607, 607, 609, 609, 610, 611, 613, 614,
615, 615, 616, 618, 619, 621, 621, 621, 621, 622, 623, 625,
626, 651, 652, 652, 652, 652, 654, 682, 682, 684, 686, 687,
688, 688, 690, 691, 693, 693, 694, 696, 697, 699, 700, 701,
701, 701, 701, 703, 704, 706, 707, 708, 708, 708, 710, 711,
713, 713, 714, 716, 717, 579, 580, 582, 582, 582, 582, 584,
585, 587, 588, 589, 589, 589, 591, 592, 594, 594, 595, 597,
598, 602, 603, 606, 606, 606, 606, 608, 609, 611, 612, 613,
613, 613, 615, 616, 618, 618, 620, 621, 621, 621, 622, 623,
648, 649, 649, 649, 649, 650, 652, 653, 678, 679, 679, 679,
679, 679, 679, 679, 679, 679, 679, 679, 680, 681, 683, 684,
709, 710, 710, 710, 710, 712, 740, 538, 540, 542, 543, 544,
544, 546, 547, 549, 549, 550, 552, 553, 555, 556, 557, 557,
557, 557, 559, 560, 562, 563, 564, 564, 564, 566, 567, 569,
569, 570, 572, 573, 576, 577, 579, 579, 579, 579, 581, 582,
584, 585, 586, 586, 586, 588, 589, 591, 591, 592, 594, 595,
599, 600, 603, 603, 603, 603, 605, 606, 608, 609, 610, 610,
610, 612, 613, 615, 615, 617, 618, 618, 618, 619, 620, 645,
646, 646, 646, 646, 647, 649, 650, 675, 676, 676, 676, 676,
676, 676, 676, 676, 676, 676, 676, 677, 678, 680, 681, 706,
707, 707, 707, 707, 709, 737, 503, 505, 507, 508, 509, 509,
511, 512, 514, 514, 515, 517, 518, 520, 521, 522, 522, 522,
522, 524, 525, 527, 528, 529, 529, 529, 531, 532, 534, 534,
535, 537, 538, 541, 542, 544, 544, 544, 544, 546, 547, 549,
550, 551, 551, 551, 553, 554, 556, 556, 557, 559, 560, 564,
565, 568, 568, 568, 568, 570, 571, 573, 574, 575, 575, 575,
577, 578, 580, 580, 582, 583, 583, 583, 584, 585, 610, 611,
611, 611, 611, 612, 614, 615, 640, 641, 641, 641, 641, 641,
641, 641, 641, 641, 641, 641, 642, 643, 645, 646, 671, 672,
672, 672, 672, 674, 702, 702, 704, 706, 707, 708, 708, 710,
711, 713, 713, 714, 716, 717, 473, 474, 475, 475, 475, 475,
477, 478, 480, 481, 482, 482, 482, 484, 485, 487, 487, 488,
490, 491, 494, 495, 497, 497, 497, 497, 499, 500, 502, 503,
504, 504, 504, 506, 507, 509, 509, 510, 512, 513, 517, 518,
521, 521, 521, 521, 523, 524, 526, 527, 528, 528, 528, 530,
531, 533, 533, 535, 536, 536, 536, 537, 538, 563, 564, 564,
564, 564, 565, 567, 568, 593, 594, 594, 594, 594, 594, 594,
594, 594, 594, 594, 594, 595, 596, 598, 599, 624, 625, 625,
625, 625, 627, 655, 655, 657, 659, 660, 661, 661, 663, 664,
666, 666, 667, 669, 670, 672, 673, 674, 674, 674, 674, 676,
677, 679, 680, 681, 681, 681, 683, 684, 686, 686, 687, 689,
690, 693, 694, 696, 696, 696, 696, 698, 699, 701, 702, 703,
703, 703, 705, 706, 708, 708, 709, 711, 712, 716, 717, 442,
442, 442, 442, 444, 445, 447, 448, 449, 449, 449, 451, 452,
454, 454, 456, 457, 457, 457, 458, 459, 484, 485, 485, 485,
485, 486, 488, 489, 514, 515, 515, 515, 515, 515, 515, 515,
515, 515, 515, 515, 516, 517, 519, 520, 545, 546, 546, 546,
546, 548, 576, 576, 578, 580, 581, 582, 582, 584, 585, 587,
587, 588, 590, 591, 593, 594, 595, 595, 595, 595, 597, 598,
600, 601, 602, 602, 602, 604, 605, 607, 607, 608, 610, 611,
614, 615, 617, 617, 617, 617, 619, 620, 622, 623, 624, 624,
624, 626, 627, 629, 629, 630, 632, 633, 637, 638, 641, 641,
641, 641, 643, 644, 646, 647, 648, 648, 648, 650, 651, 653,
653, 655, 656, 656, 656, 657, 658, 683, 684, 684, 684, 684,
685, 687, 688, 713, 714, 714, 714, 714, 714, 714, 714, 714,
714, 714, 714, 715, 716, 718, 340, 365, 366, 366, 366, 366,
368, 396, 396, 398, 400, 401, 402, 402, 404, 405, 407, 407,
408, 410, 411, 413, 414, 415, 415, 415, 415, 417, 418, 420,
421, 422, 422, 422, 424, 425, 427, 427, 428, 430, 431, 434,
435, 437, 437, 437, 437, 439, 440, 442, 443, 444, 444, 444,
446, 447, 449, 449, 450, 452, 453, 457, 458, 461, 461, 461,
461, 463, 464, 466, 467, 468, 468, 468, 470, 471, 473, 473,
475, 476, 476, 476, 477, 478, 503, 504, 504, 504, 504, 505,
507, 508, 533, 534, 534, 534, 534, 534, 534, 536, 537, 538,
538, 539, 541, 542, 567, 568, 568, 568, 568, 569, 570, 595,
596, 596, 596, 596, 596, 596
]
memResidencies = [
177, 178, 178, 180, 182, 183, 179, 179, 180, 180, 182, 184,
185, 181, 181, 182, 182, 184, 186, 187, 183, 183, 184, 184,
186, 188, 189, 185, 185, 186, 186, 188, 190, 191, 187, 187,
188, 188, 190, 192, 193, 189, 189, 190, 190, 192, 194, 195,
191, 191, 192, 192, 194, 196, 197, 193, 193, 194, 194, 196,
198, 199, 195, 195, 196, 196, 198, 200, 201, 197, 197, 198,
198, 200, 202, 203, 199, 199, 200, 200, 202, 204, 205, 201,
201, 202, 202, 204, 206, 207, 203, 203, 204, 204, 206, 208,
209, 205, 205, 206, 206, 208, 210, 211, 207, 207, 208, 208,
210, 212, 213, 209, 209, 210, 210, 212, 214, 215, 211, 211,
212, 212, 214, 216, 217, 213, 213, 214, 214, 216, 218, 219,
215, 215, 216, 216, 218, 220, 221, 217, 217, 218, 218, 220,
222, 223, 219, 219, 220, 220, 222, 224, 225, 221, 221, 222,
222, 224, 226, 227, 223, 223, 224, 224, 226, 228, 229, 225,
225, 226, 226, 228, 230, 231, 227, 227, 228, 228, 230, 232,
233, 229, 229, 230, 230, 232, 234, 235, 231, 231, 232, 232,
234, 236, 237, 233, 233, 234, 234, 236, 238, 239, 235, 235,
236, 236, 238, 240, 241, 237, 237, 238, 238, 240, 242, 243,
239, 239, 240, 240, 242, 244, 245, 241, 241, 242, 242, 244,
246, 247, 243, 243, 244, 244, 246, 248, 249, 245, 245, 246,
246, 248, 250, 251, 247, 247, 257, 258, 258, 259, 259, 261,
263, 264, 260, 260, 261, 261, 263, 265, 266, 262, 262, 264,
283, 299, 300, 300, 301, 301, 302, 302, 304, 306, 307, 303,
303, 304, 304, 306, 308, 309, 305, 305, 307, 308, 305, 305,
307, 326, 327, 329, 330, 327, 327, 305, 305, 307, 307, 328,
338, 339, 340, 337, 338, 338, 339, 339, 340, 341, 341, 342,
339, 339, 340, 342, 343, 342, 340, 341, 342, 343, 363, 364,
363, 341, 341, 343, 344, 343, 342, 364, 374, 375, 376, 373,
374, 374, 375, 375, 376, 377, 377, 378, 375, 375, 376, 378,
379, 378, 376, 377, 378, 379, 399, 400, 399, 377, 377, 379,
380, 379, 377, 400, 410, 411, 412, 409, 410, 410, 411, 411,
412, 413, 413, 414, 411, 411, 412, 414, 415, 414, 412, 413,
414, 415, 435, 436, 435, 413, 413, 415, 416, 415, 412, 436,
446, 447, 448, 445, 446, 446, 447, 447, 448, 449, 449, 450,
447, 447, 448, 450, 451, 450, 448, 449, 450, 451, 471, 472,
471, 449, 449, 451, 452, 451, 447, 472, 482, 483, 484, 481,
482, 482, 483, 483, 484, 485, 485, 486, 483, 483, 484, 486,
487, 486, 484, 485, 486, 487, 507, 508, 507, 485, 485, 487,
488, 487, 482, 508, 518, 519, 520, 517, 518, 518, 519, 519,
520, 521, 521, 522, 519, 519, 520, 522, 523, 522, 520, 521,
522, 523, 543, 544, 543, 521, 521, 523, 524, 523, 517, 544,
554, 555, 556, 553, 554, 554, 555, 555, 556, 557, 557, 558,
555, 555, 556, 558, 559, 558, 556, 555, 555, 556, 557, 557,
558, 578, 579, 577, 555, 555, 557, 582, 580, 581, 583, 584,
581, 581, 583, 584, 583, 581, 582, 584, 585, 584, 585, 582,
582, 581, 581, 583, 584, 583, 584, 581, 581, 581, 583, 584,
583, 581, 582, 584, 585, 585, 586, 583, 583, 582, 582, 584,
585, 584, 585, 582, 582, 582, 584, 585, 584, 582, 583, 585,
586, 587, 588, 584, 584, 583, 583, 585, 586, 585, 586, 583,
583, 583, 585, 586, 585, 583, 585, 559, 557, 557, 558, 559,
579, 580, 579, 557, 557, 558, 559, 560, 580, 581, 579, 557,
557, 521, 521, 520, 520, 520, 519, 519, 520, 521, 521, 522,
542, 543, 541, 519, 519, 521, 546, 544, 545, 547, 548, 545,
545, 547, 548, 547, 545, 546, 548, 549, 548, 549, 546, 546,
545, 545, 547, 548, 547, 548, 545, 545, 545, 547, 548, 547,
545, 546, 548, 549, 549, 550, 547, 547, 546, 546, 548, 549,
548, 549, 546, 546, 546, 548, 549, 548, 546, 547, 549, 550,
551, 552, 548, 548, 547, 547, 549, 550, 549, 550, 547, 547,
547, 549, 550, 549, 547, 549, 523, 521, 521, 522, 523, 543,
544, 543, 521, 521, 522, 523, 524, 544, 545, 543, 521, 521,
485, 485, 484, 484, 484, 483, 483, 484, 485, 485, 486, 506,
507, 505, 483, 483, 485, 510, 508, 509, 511, 512, 509, 509,
511, 512, 511, 509, 510, 512, 513, 512, 513, 510, 510, 509,
509, 511, 512, 511, 512, 509, 509, 509, 511, 512, 511, 509,
510, 512, 513, 513, 514, 511, 511, 510, 510, 512, 513, 512,
513, 510, 510, 510, 512, 513, 512, 510, 511, 513, 514, 515,
516, 512, 512, 511, 511, 513, 514, 513, 514, 511, 511, 511,
513, 514, 513, 511, 513, 487, 485, 485, 486, 487, 507, 508,
507, 485, 485, 486, 487, 488, 508, 509, 507, 485, 485, 449,
449, 448, 448, 448, 447, 447, 448, 449, 449, 450, 470, 471,
469, 447, 447, 449, 474, 472, 473, 475, 476, 473, 473, 475,
476, 475, 473, 474, 476, 477, 476, 477, 474, 474, 473, 473,
475, 476, 475, 476, 473, 473, 473, 475, 476, 475, 473, 474,
476, 477, 477, 478, 475, 475, 474, 474, 476, 477, 476, 477,
474, 474, 474, 476, 477, 476, 474, 475, 477, 478, 479, 480,
476, 476, 475, 475, 477, 478, 477, 478, 475, 475, 475, 477,
478, 477, 475, 477, 451, 449, 449, 450, 451, 471, 472, 471,
449, 449, 450, 451, 452, 472, 473, 471, 449, 449, 413, 413,
412, 412, 412, 411, 411, 412, 413, 413, 414, 434, 435, 433,
411, 411, 413, 438, 436, 437, 439, 440, 437, 437, 439, 440,
439, 437, 438, 440, 441, 440, 441, 438, 438, 437, 437, 439,
440, 439, 440, 437, 437, 437, 439, 440, 439, 437, 438, 440,
441, 441, 442, 439, 439, 438, 438, 440, 441, 440, 441, 438,
438, 438, 440, 441, 440, 438, 439, 441, 442, 443, 444, 440,
440, 439, 439, 441, 442, 441, 442, 439, 439, 439, 441, 442,
441, 439, 441, 415, 413, 413, 414, 415, 435, 436, 435, 413,
413, 414, 415, 416, 436, 437, 435, 413, 413, 377, 377, 376,
376, 376, 375, 375, 376, 377, 377, 378, 398, 399, 397, 375,
375, 377, 402, 400, 401, 403, 404, 401, 401, 403, 404, 403,
401, 402, 404, 405, 404, 405, 402, 402, 401, 401, 403, 404,
403, 404, 401, 401, 401, 403, 404, 403, 401, 402, 404, 405,
405, 406, 403, 403, 402, 402, 404, 405, 404, 405, 402, 402,
402, 404, 405, 404, 402, 403, 405, 406, 407, 408, 404, 404,
403, 403, 405, 406, 405, 406, 403, 403, 403, 405, 406, 405,
403, 405, 379, 377, 377, 378, 379, 399, 400, 399, 377, 377,
378, 379, 380, 400, 401, 399, 377, 377, 341, 341, 340, 340,
340, 339, 339, 340, 341, 341, 342, 362, 363, 361, 339, 339,
341, 366, 364, 365, 367, 368, 365, 365, 367, 368, 367, 365,
366, 368, 369, 368, 369, 366, 366, 365, 365, 367, 368, 367,
368, 365, 365, 365, 367, 368, 367, 365, 366, 368, 369, 369,
370, 367, 367, 366, 366, 368, 369, 368, 369, 366, 366, 366,
368, 369, 368, 366, 367, 369, 370, 371, 372, 368, 368, 367,
367, 369, 370, 369, 370, 367, 367, 367, 369, 370, 369, 367,
369, 343, 341, 341, 342, 343, 363, 364, 363, 341, 341, 342,
343, 344, 364, 365, 363, 341, 341, 305, 305, 307, 308, 305,
305, 306, 307, 308, 328, 329, 327, 305, 305, 306, 307, 327,
328, 327, 305, 305, 262, 262
]


x = range(1, len(memResidencies) + 1)


# Plotting the lines
plt.plot(x, memResidencies, label='Memory Residency')
plt.plot(x, memUsages, label='Memory Allocation')


plt.title('Memory usage compare to memory residency with GC running')

# Adding a legend
plt.legend()

# Displaying the plot
plt.show()